home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Information / Programming / Gestalt Selectors 3.2 / Gestalt Selectors List 3.2 next >
Encoding:
Text File  |  1995-12-11  |  276.4 KB  |  6,853 lines  |  [TEXT/R*ch]

  1. Gestalt Selectors List 3.2
  2. ==========================
  3.  
  4. Maintained by Rene G.A. Ros (rgaros@bio.vu.nl)
  5.  
  6. First published: 12 October 1992, 13:15 CET (GMT+1)
  7. Last version:    1 October 1995, 12:40 CET (GMT+1)
  8. Previous update: 29 November 1995, 19:40 CET (GMT+1)
  9. Last modified  : 11 December 1995, 08:05 CET (GMT+1)
  10.  
  11. This document lists all selectors for use with the Gestalt Manager known to
  12. the editor. These can include selector codes installed by Apple (system)
  13. software or by software from third parties (your software?).
  14. The information in this list is useful for programmers and other people who
  15. can use the Gestalt Manager with their software (i.e. Apple Guide) perhaps
  16. even using externals (i.e. HyperCard, 4th Dimension etc.).
  17. To use this list, you should be familiar with the Gestalt Manager as
  18. described in Inside Macintosh: Operating System Utilities.
  19.  
  20. This file can be best viewed with a mono-spaced font like Monaco. Because
  21. it is wrapped as setext you can use several utilities to index and read it.
  22. For the Macintosh you can use Easy View and on a UNIX system sv (setext
  23. viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu
  24. (or its mirrors!), archived respectively as:
  25.      ftp://sumex-aim.stanford.edu/info-mac/text/easy-view-261.hqx
  26.      ftp://sumex-aim.stanford.edu/info-mac/text/easy-view-262-updt.hqx
  27.      ftp://sumex-aim.stanford.edu/info-mac/text/setext-viewer-05-unix.uu
  28.  
  29. A single question mark indicates an uncertainty regarding the information
  30. in front of the question mark. Three question marks indicate complete
  31. absence of the information.
  32. See the chapters at the end for more information about this list.
  33.  
  34. Contents
  35. --------
  36.     Gestalt Selectors List
  37.       Contents
  38.       Contributions
  39.       Changes Overview
  40.       Wish List
  41.     Apple System Software (A-E)
  42.     Apple System Software (F-J)
  43.     Apple System Software (K-N)
  44.     Apple System Software (O-S)
  45.     Apple System Software (T-Z)
  46.     Apple Additional Software
  47.     Third Parties Software
  48.     Unknown Codes
  49.       Apple Software
  50.       Third Parties Software
  51.     Gestalt Manager Calls
  52.       Gestalt Manager Routines
  53.       Gestalt Value Routines
  54.       Undocumented Gestalt Manager Routines
  55.     Kilo-liners
  56.       Direct Gestalt Calls
  57.       Direct GestaltValue Calls
  58.       GestaltSelectorZero
  59.       GestaltBitTest
  60.       Call Gestalt Function Direct
  61.     Reports
  62.       Accessing the Gestalt Manager
  63.       AppleShare File & Print Server selector codes
  64.       AppleTalk
  65.       Clock Chipped
  66.       Copland
  67.       Copy protection using Gestalt
  68.       Disabling PowerKey
  69.       Environs & SysEnvirons
  70.       Executor Mac-emulator
  71.       Gestalt Apple Event
  72.       Gestalt Applications
  73.       GestaltValue
  74.       GestaltValue & CodeWarrior Problem
  75.       Glue code
  76.       INITGestalt standard
  77.       Machine Names
  78.       Macintosh Application Environment
  79.       Macintosh Clones
  80.       Modern Memory Manager
  81.       PPC Libraries
  82.       QuickTime
  83.       RAM Doubler
  84.       Relabled Macintosh Models
  85.     General Info
  86.       System Managers
  87.       Gestalt Problems
  88.       History
  89.       Abbreviations
  90.       Sources
  91.     Definitions and Formats
  92.       Use in Language
  93.       Definitions
  94.       Format Selector Entry
  95.       Format Version Numbers
  96.     About this list
  97.       Availability
  98.       Gestalt Submission Form
  99.       Acknowledgements
  100.       Legal Stuff
  101.       Editor's Address
  102.  
  103. Contributions
  104. -------------
  105. This section lists the people who contributed information which is now
  106. included with this version of the list.
  107.  
  108. ===========================================================================
  109. Contributions to the selector sections
  110. ===========================================================================
  111. Person                 Software                Selector(s) added/changed
  112. ---------------------------------------------------------------------------
  113. Anonymous 'Fig'        AutoDoubler cp          DDAD, DDAE, DDNF
  114.                        DDExpand appl           ADR2, ADRC
  115. Anonymous              Open Transport ???      otvr
  116.                        System (enablers)       drag, mach (Info TN Gestalt)
  117.                        System Update enbl      sysu
  118. Jeff Baudin            System (enablers)       mach
  119. Jean-Pierre Curcio     Launcher cp             bast
  120.                        QuickDraw 3D            q3v 
  121.                        Sound Manager ext       snhw
  122.                        System (enablers)       hdwr, mach, shal
  123.                        System Tune-Up          bugz
  124.                        System Update etc.      bugx
  125.                        WorldScript Power Adapter ext?
  126.                                                scrf
  127. Laurent Humbert        System (enablers)       thds
  128. Fabrizio Oddone        QuickDraw 3D            q3vc, q3v 
  129. Marco Piovanelli       Finder Enabler          fndx
  130. Jon Pugh               General cp              gpad
  131. Eric-Paul Rebel        System (enablers)       mach
  132. Thomas Reed            PixelPlay               SAVC, SAVR
  133. Rene Ros               7.0/7.1 Apple Guide Enabler ext
  134.                                                ag_e
  135.                        7.5.2 Printing Fix      bugx
  136.                        AppleShare ext          afps
  137.                        CommuniGate Notifier ext
  138.                                                cGnF
  139.                        CopyDoubler cp          DDCD
  140.                        CyberFinder cp          URL!, URLf
  141.                        Eagle ext               EgGP
  142.                        IdleTime INIT           idle
  143.                        IRTalk ext              irhk, puir
  144.                        Macintosh Drag and Drop ext
  145.                                                drag
  146.                        MIDI Manager ext        bugx
  147.                        PageUp/Down ext         jGnE
  148.                        PowerPort cp?           gVDI
  149.                        RAMGauge cp             FCDV
  150.                        SerialDMA ext           shal
  151.                        Speed Access ext        MV20
  152.                        Super Saver cp          MFK7
  153.                        System (enablers)       mach, micn, nreg, rsrc, snd 
  154.                        System?                 cmic, fstn, puir
  155.                        TeamNotify ext          NTFY
  156.                        unknown                 MV20, XAsm
  157. Maurice Volaski        System (enablers)       mach
  158. Terence Worley         Microsoft Office Manager cp
  159.                                                MOMM
  160. ---------------------------------------------------------------------------
  161.  
  162. ===========================================================================
  163. Contributions to the non-selector sections
  164. ===========================================================================
  165. Person                 Chapter/Section
  166. ---------------------------------------------------------------------------
  167. Jeff Baudin            Reports/Clock Chipped
  168. Jean-Pierre Curcio     Reports/Macintosh Clones
  169. Kenneth Knotts         Reports/Macintosh Clones
  170. Eric-Paul Rebel        Reports/Machine Names
  171. Rene Ros               Reports/Gestalt Applications
  172.                        Reports/Relabled Macintosh Models
  173. Maurice Volaski        Reports/Relabled Macintosh Models
  174. ---------------------------------------------------------------------------
  175.  
  176. Some previously distributed versions listed the Compuserve email address of
  177. the editor incorrect. The correct address is 100112.1363@compuserve.com
  178.  
  179. All definitions in entries are now in C.
  180.  
  181. Includes new info from the September 1995 revision of the Gestalt and
  182. SysEnvirons Technical Note (draft).
  183.  
  184. Eric-Paul Rebel 'read' the PowerBook 5300/190 Enabler for us and found two
  185. different machine type values for the PowerBook 5300!
  186.  
  187. Changes Overview
  188. ----------------
  189. Added selectors
  190.     Apple System  : -
  191.     Apple Add.    : q3v 
  192.     Third Parties : idle
  193. Added unknown
  194.     Apple Softw.  : cmic, fstn, otvr
  195.     Third Parties : cGnF, EgGP, FCDV, gVDI, MFK7, MV20, NTFY, URL!,
  196.                     XAsm
  197. Changed selectors
  198.     Apple System  : afps, drag, hdwr, mach, micn, nreg, rsrc, shal,
  199.                     snd , snhw, thds
  200.     Apple Add.    : q3vc
  201.     Third Parties : SAVC, SAVR
  202. Changed unknown
  203.     Apple Softw.  : bast, bugx, bugy, bugz, fndx, gpad, irhk, puir,
  204.                     scrf, shal
  205.     Third Parties : ADR2, ADRC, DDAD, DDAE, DDCD, DDNF, jGnE, URLf
  206. Previously unknown
  207.     Apple System  : -
  208.     Apple Add.    : -
  209.     Third Parties : MOMM
  210. Includes updates 3.1.1 up to and including 3.1.6, sent to subscribers of
  211. the mailing list.
  212.  
  213. Wish list
  214. ---------
  215. The table below lists the topics on which more information is needed
  216. regarding the Gestalt selectors which provide information about these
  217. topics.
  218.  
  219. ===========================================================================
  220. WANTED
  221. ===========================================================================
  222. Information wanted about:
  223. ---------------------------------------------------------------------------
  224. PowerPCx Platform  formerly CHRP
  225. DR Emulator        short for dynamic recompiling emulator, on new Power
  226.                    Macs, nothing?)
  227. FireWire
  228. Gestalt Manager    its future
  229. multi-processing   'kbd ' already obsolete, 'proc' also? :-)
  230. PCI                selector like 'slot' for NuBus? Anything?
  231. Pippin
  232. QuickTime VR       nothing? now as library, later as extension?
  233. RAID               compatible drivers installed?
  234. SD-ROM             Super CD-ROM (10x capacity CD-ROM) driver software?
  235. Sound Manager 3.1  PPC native bit in gestaltSoundAttr response? none?
  236.  
  237. machine IDs        for the latest or upcoming Macs
  238.  
  239. and more info for the General Info/System Managers section
  240. ---------------------------------------------------------------------------
  241.  
  242. Apple System Software (A-E)
  243. ===========================
  244. This chapter lists selector codes of which the meaning is known and the
  245. first character of the selector code is in the A-E range.
  246.  
  247. a/ux (A/UX [2.0?])
  248.      (System [6.0.4])
  249.      gestaltAUXVersion
  250.      Returns the version of A/UX, if it is executing, as BCD?
  251.  
  252.      #define gestaltAUXVersion 'a/ux' /* A/UX version, if present */
  253.  
  254.      NOTES:
  255.      If Gestalt doesn't know the answer, test bit 9 of the HWCFgFlag
  256.      system global (0x0B22; word). If set, assume you have A/UX 1.0.
  257.  
  258.      This selector also indicates if you're running under MAE on an
  259.      UNIX machine. &AD08
  260.  
  261.      This selector may be installed but returns gestaltUnknownErr instead
  262.      of zero when A/UX is not installed. (Rene Ros)
  263.  
  264. addr (System [6.0.4])
  265.      gestaltAddressingModeAttr
  266.      Returns information about the current addressing mode.
  267.  
  268.      enum {
  269.      #define gestaltAddressingModeAttr 'addr' /* addressing mode attr. */
  270.      gestalt32BitAddressing = 0,  /* started up with 32-bit addr. */
  271.      gestalt32BitSysZone    = 1,  /* system heap has 32-bit clean */
  272.                                   /*  block headers */
  273.      gestalt32BitCapable    = 2}; /* machine is 32-bit capable */
  274.  
  275. afps (AppleShare ext [3.5?], part of System 7.5) &AD18
  276.      gestaltAppleShareClient?
  277.      Returns the version of the AppleShare client software as Integer in
  278.      the high-word of the response? The low-word of the response returns
  279.      information on the AppleShare client software? (Rene Ros)
  280.  
  281.      enum {
  282.      #define gestaltAppleShareClient? 'afps'
  283.      gestaltAppleShareVersionMask? = 0xFFFF0000, /* Version is in upper */
  284.                                                  /*  2 bytes of result */
  285.      gestaltAppleShare???Mask?     = 0x0001};    /* If set ??? */
  286.      gestaltAppleShare???Mask?     = 0x0002};    /* If set ??? */
  287.  
  288.      NOTE:
  289.      No details were given in the source: "...information about the
  290.      characteristics of the workstation and the current version..."
  291.      Seen bits 0 and 16 set. (Rene Ros)
  292.  
  293. ag_v (Apple Guide ext [1.2.7])
  294.      gestaltAppleGuideVersion?
  295.      Returns the version number of Apple Guide as BCD.
  296.  
  297.      #define gestaltAppleGuideVersion? 'ag_v'
  298.  
  299. alis (System [7.0])
  300.      (Remote Access Aliases ext [1.0?], part of Apple Remote Access)
  301.      gestaltAliasMgrAttr
  302.      Returns information about the Alias Manager.
  303.  
  304.      enum {
  305.      #define gestaltAliasMgrAttr 'alis' /* Alias Mgr attributes */
  306.      gestaltAliasMgrPresent                 = 0,
  307.      gestaltAliasMgrSupportsRemoteAppletalk = 1,  /* supports Remote */
  308.                                                   /*  Appletalk &AD02 */
  309.      gestaltAliasMgr???                     = 2}; /* since System 7.1 Pro*/
  310.  
  311.      NOTE: See 'Reports' chapter (QuickTime section) for more information.
  312.  
  313. ascr (AppleScript ext [1.0]) 
  314.      gestaltAppleScriptAttr &AS08
  315.      Returns information about AppleScript.
  316.  
  317.      enum {
  318.      #define gestaltAppleScriptAttr 'ascr' /* AppleScript attributes */
  319.      gestaltAppleScriptPresent        = 0,
  320.      gestaltAppleScriptPowerPCSupport = 1};
  321.  
  322. ascv (AppleScript ext [1.0])
  323.      gestaltAppleScriptVersion &AS08
  324.      Returns the version of AppleScript as NumVersion.
  325.  
  326.      #define gestaltAppleScriptVersion 'ascv' /* AppleScript version */
  327.  
  328.      NOTE:
  329.      AppleScript 1.1 returns 0x01100110 which doesn't look like a proper
  330.      version number (version 1.0 returned 0x01008000). (Rene Ros)
  331.  
  332. aslm (Shared Library Manager ext [1.1.1?])
  333.      (System? [7.5?])
  334.      gestaltASLM68K &AS17
  335.      Returns the version of the Shared Library Manager as BCD in the upper
  336.      2 bytes and attribute bits in the lower 2 bits. NULL is returned when
  337.      ASLM did not load properly at boot time and is not available.
  338.  
  339.      enum {
  340.      #define gestaltASLM68K 'aslm' /* ASLM selector for 68K Macs */
  341.      #define gestaltASLMPPC 'slmp' /* ASLM selector for PPC Macs */
  342.      #define gestaltASLM 'aslm'    /* or 'slmp', see below */
  343.      gestaltASLMVersionMask = 0xFFFF0000, /* Version is in upper 2 bytes */
  344.                                           /*  of result */
  345.      gestaltASLMPresentMask = 0x0001,     /* If set ASLM is or was */
  346.                                           /*  loaded. */
  347.      gestaltASLMLoadedMask  = 0x0002};    /* If set ASLM is currently */
  348.                                           /*  loaded. */
  349.  
  350.      #if GENERATINGPOWERPC
  351.          define gestaltASLM gestaltASLMPPC
  352.      #else
  353.          define gestaltASLM gestaltASLM68K
  354.      #endif
  355.  
  356.      NOTES:
  357.      Earlier (beta?) versions of the ASLM PowerPC used 'ASLM' as the
  358.      selector instead of 'slmp'.
  359.  
  360.      Early releases of Shared Library Manager installed an INIT into the 
  361.      system file which registered this selector with an invalid function 
  362.      pointer in the case that the Shared Library Manager extension did not 
  363.      exist. Calling Gestalt with this selector would then cause a bus error.
  364.      (Paul Cunningham, Teknosys, Inc.)
  365.  
  366.      Shared Library Manager 2.0 (beta) on a Power Macintosh 6100/60
  367.      installs both 'aslm' and 'slmp' selectors. (Rene Ros)
  368.  
  369. ASLM (Shared Library Manager ext [1.1.1?])
  370.      (System? [7.5?])
  371.      gestaltASLMPPC (old!) &AS17
  372.  
  373.      NOTE:
  374.      See the gestaltASLM68K ('aslm') entry for more information.
  375.  
  376. atkv (System [7.0, AppleTalk 56])
  377.      gestaltATalkVersion &AT02
  378.      Returns AppleTalk version as NumVersion. If selector is not present
  379.      then AppleTalk is not present (not loaded at startup). &AD18
  380.  
  381.      This is different from 'atlk' !
  382.  
  383.      #define gestaltATalkVersion 'atkv' /* AppleTalk version &AD01/M01 */
  384.  
  385.      WARNING:
  386.      This selector returns the majorRev field of the NumVersion record as
  387.      hexadecimal instead of the usual BCD.
  388.  
  389.      NOTE: See 'Reports' chapter (AppleTalk section) for more information.
  390.  
  391. atlk (System [6.0.4])
  392.      gestaltAppleTalkVersion
  393.      Returns the version of the .MPP driver as INTEGER. And returns zero
  394.      when AppleTalk is off. &AD18
  395.  
  396.      #define gestaltAppleTalkVersion 'atlk' /* AppleTalk version */
  397.  
  398. aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) &AT03
  399.      gestaltAudioCDAccessVersion?
  400.      Returns Audio CD Access version as BCD.
  401.  
  402.      #define gestaltAudioCDAccessVersion? 'aucd' /* Audio CD Access */
  403.                                                  /*  version */
  404.  
  405.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  406.  
  407. BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
  408.      gestaltCloseViewAttr
  409.      Returns information about the CloseView Control Panel.
  410.  
  411.      enum {
  412.      #define gestaltCloseViewAttr 'BSDa'      /* CloseView attributes */
  413.      gestaltCloseViewEnabled            = 0,
  414.      gestaltCloseViewDisplayMgrFriendly = 1}; /* Closeview compatible */
  415.                                               /*  with Display Manager */
  416.                                               /*  (System 7.5.2?) &AS05 */
  417.  
  418. cash (System [???]) &S03
  419.      gestaltRAMCacheSize
  420.      Returns byte-size of physical RAM allocated to Disk Cache.
  421.      0 = Disk Cache Off
  422.  
  423.      #define gestaltRAMCacheSize 'cash' /* RAM cache size */
  424.  
  425.      NOTE:
  426.      This selector is listed in THINK Reference 1.0 but it is unknown which
  427.      System Software version should install it.
  428.  
  429. cfrg (System [7.1.2? on PowerMac])
  430.      (CFM68K ext [1.0a1], part of OpenDoc)
  431.      gestaltCFMAttr
  432.      Returns information about the Code Fragment Manager.
  433.  
  434.      enum {
  435.      #define gestaltCFMAttr 'cfrg' /* Code Fragment Mgr attributes */
  436.      gestaltCFMPresent = 0}; /* Code Fragment Manager is present */
  437.  
  438. cmta (ColorSync ext [1.0.4?]
  439.      gestaltColorMatchingAttr &AD09
  440.      Returns information about the ColorSync Utilities?
  441.  
  442.      enum {
  443.      #define gestaltColorMatchingAttr 'cmta' /* Color Matching Attr. */
  444.      gestaltHighLevelMatching      = 0,  /* BeginMatching & */
  445.                                          /*  DrawMatchedPicture present */
  446.      gestaltColorMatchingLibLoaded = 1}; /* Native PowerPC shared */
  447.                                          /*  library is loaded. a.k.a. */
  448.                                          /*  gestaltSharedLibLoaded? */
  449.  
  450. cmtc (ColorSync ext [1.0?])
  451.      gestaltColorMatchingVersion
  452.      Returns the version of the Color Matching software as BCD.
  453.  
  454.      enum {
  455.      #define gestaltColorMatchingVersion 'cmtc' /* Color Matching */
  456.                                                 /* version */
  457.      gestaltColorSync10  = 0x0100,  /* &AD09 */
  458.      gestaltColorSync11  = 0x0110,  /* &AD09 */
  459.      gestaltColorSync104 = 0x0104,  /* &AD09 */
  460.      gestaltColorSync105 = 0x0105,  /* &AD09 */
  461.      gestaltColorSync20  = 0x0200}; /* &AD17/AD21 */
  462.  
  463.      NOTE:
  464.      ColorSync 1.0 returns gestaltColorSync10 for the version of the
  465.      utilities that work with System 6.0.7. And gestaltColorSync11 is
  466.      returned by the version that works with System 7.0 and later.
  467.      From version 1.0.4 up the correct version is returned. &AD17
  468.  
  469. conn (System [7.0])
  470.      gestaltConnMgrAttr
  471.      Returns information about the Connection Manager.
  472.  
  473.      enum {
  474.      #define gestaltConnMgrAttr 'conn' /* Conn. Mgr attributes */
  475.      gestaltConnMgrPresent      = 0,  /* Connection Mgr is present */
  476.      gestaltConnMgrCMSearchFix  = 1,  /* fix for CMAddSearch present */
  477.      gestaltConnMgrErrorString  = 2,  /* has CMGetErrorString &AS02 */
  478.      gestaltConnMgrMultiAsyncIO = 3}; /* CMNewsIOPB,CMDisposeIOPB, */
  479.                                       /*  CMPBRead,CMPBWrite,CMPBIOKill */
  480.                                       /*  &AS02 */
  481.  
  482.      NOTE:
  483.      Not installed by Communications Toolbox for System 6.
  484.  
  485. cpkr (Color Picker ext [2.0?])
  486.      gestaltColorPicker
  487.      gestaltColorPickerVersion
  488.      Returns Color Picker version as BCD.
  489.  
  490.      /* ColorPicker Mgr version */
  491.      #define gestaltColorPicker 'cpkr'
  492.      #define gestaltColorPickerVersion 'cpkr'
  493.  
  494.      NOTE:
  495.      Version 2.0a4 returns as response 0x0001, but version 2.0a5 and
  496.      later (including 2.0f) return 0x0100. (Rene Ros)
  497.  
  498. cpnt (System [7.1])
  499.      (Color Picker Extension ext [2.0])
  500.      (Color Sync ext [1.0.4?])
  501.      (Macintosh Easy Open cp [1.0?])
  502.      (QuickTime ext [1.0])
  503.      (Speech Manager ext [1.1.1, not 1.2?])
  504.      gestaltComponentMgr
  505.      Returns Component Manager version as INTEGER.
  506.  
  507.      #define gestaltComponentMgr 'cpnt' /* Component Mgr version &AS01 */
  508.  
  509. cput (System [7.1.2?]) &AS04/AS05
  510.      gestaltNativeCPUtype
  511.      Returns a value that indicates the type of native processor that is
  512.      currently running.
  513.  
  514.      enum {
  515.      #define gestaltNativeCPUtype 'cput' /* Native CPU type */
  516.      /* Motorola Architecture */
  517.      gestaltCPU68000 = 1,
  518.      gestaltCPU68010 = 2,
  519.      gestaltCPU68020 = 3,
  520.      gestaltCPU68030 = 4,
  521.      gestaltCPU68040 = 5,
  522.      /* PowerPC Architecture */
  523.      gestaltCPU601   = 0x101,
  524.      gestaltCPU603   = 0x103,
  525.      gestaltCPU604   = 0x104,  /* same for 604e ? */
  526.      gestaltCPU603e? = 0x106,  /* for 603e ? seen on PowerBook 5300 */
  527.      
  528.      /* PowerPC Architecture (Unreleased & Rumoured) */
  529.      gestaltCPU603ev?= ???,
  530.      gestaltCPU604e? = ???,
  531.      gestaltCPU613?  = ???,
  532.      gestaltCPU614?  = ???,
  533.      gestaltCPU615?  = ???,
  534.      gestaltCPU620?  = ???,
  535.      gestaltCPU630?  = ???};
  536.  
  537.      NOTE:
  538.      To check whether the native system architecture is a MC680x0 or a
  539.      PowerPC use the gestaltSysArchitecture ('sysa') selector. See for
  540.      more information on the 68K processors the gestaltProcessorType
  541.      ('proc') selector.
  542.  
  543.      The GestaltEqu.h file published with E.T.O. #12 was replaced by the
  544.      one on E.T.O. #13. However there was made a mistake, it lists the 68K
  545.      values in the range 0-4 while it should be 1-5 as listed above.
  546.      This problem is acknowledged by Apple.
  547.      You can fix this problem by using the declarations listed above or by
  548.      using the GestaltEqu.h file from E.T.O. #13 but then test first the
  549.      gestaltSysArchitecture ('sysa') selector and when it reports a 68K
  550.      machine use gestaltProcessorType.
  551.      However, System 7.5 and later were apperantly created using the
  552.      incorrect header file and return the incorrect values.
  553.      Example: 'cput' returns 3 and 'proc' returns 4.
  554.      (Anonymous, Dave Radcliffe, Roland Mansson, Rene Ros)
  555.  
  556. crm  (System [7.0])
  557.      gestaltCRMAttr
  558.      Returns information about the Communications Resource Manager.
  559.  
  560.      enum {
  561.      #define gestaltCRMAttr 'crm ' /* Comm. Resource Mgr attributes */
  562.      gestaltCRMPresent       = 0,  /* Comm. Resource Mgr present */
  563.      gestaltCRMPersistentFix = 1,  /* fix for persistent tools &AS02 */
  564.      gestaltCRMToolRsrcCalls = 2}; /* has CRMGetToolResource/ */
  565.                                    /*  ReleaseToolResource &AS02 */
  566.  
  567.      NOTE:
  568.      Not installed by Communications Toolbox for System 6.
  569.  
  570. csvr (Control Strip cp [1.0])
  571.      gestaltControlStripVersion
  572.      Returns the version of Control Strip software that is installed as
  573.      NumVersion.
  574.  
  575.      #define gestaltControlStripVersion 'csvr'
  576.  
  577.      WARNING:
  578.      Control Strip 1.0 used to install the 'sdvr' selector (which is used
  579.      by PowerTalk) instead of this selector to return the version. This is
  580.      corrected when the gestaltControlStripAttr ('sdev') selector has bit
  581.      gestaltControlStripVersionFixed set (Control Strip 1.1 and later).
  582.      &AS11/AT08 (Rene Ros)
  583.  
  584. ctbm (System [???])
  585.      gestaltCTBManagersAttr &S02
  586.      Returns information about the Communications Toolbox Managers, it is a
  587.      bitmask of which managers are present.
  588.  
  589.      #define gestaltCTBManagersAttr 'ctbm' /* Comm. Mgrs attributes */
  590.  
  591.      NOTE:
  592.      Never installed by any known system version. Never planned for any
  593.      previous or future system version. (Alex Rosenberg)
  594.  
  595. ctbu (System [7.0])
  596.      gestaltCTBUtilsAttr &S02
  597.      Returns information about the Communications Toolbox Utilities.
  598.  
  599.      enum {
  600.      #define gestaltCTBUtilsAttr 'ctbu' /* Comm. TB Utils attr. */
  601.      gestaltCTBUtilsPresent = 0};
  602.  
  603.      NOTE:
  604.      Not installed by Communications Toolbox for System 6.
  605.  
  606. ctbv (System [7.0])
  607.      gestaltCTBVersion
  608.      Returns the version number of the Communications Toolbox.
  609.  
  610.      #define gestaltCTBVersion 'ctbv' /* Comm. Toolbox version */
  611.  
  612.      NOTE:
  613.      Not installed by Communications Toolbox for System 6.
  614.  
  615.      With the Power Macintosh the Communication Toolbox returned a Gestalt
  616.      value indicating version 1.1 while the ROM actually had version 1.0.
  617.      This is fixed by the PowerPC Enabler 1.0.1. and the PowerPC Upgrade
  618.      Card Enabler 1.0.1. because they install CTB 1.1. &AT06
  619.      As of System 7.1, the version of the CTB should track the System
  620.      version. The PowerMac ROMs handled this incorrectly and System 7.5
  621.      rectifies this by reporting 7.5.0. (Alex Rosenberg)
  622.  
  623. danm (System [Copland?])
  624.      gestaltDesktopAnimationMgr &AD21
  625.      Returns information about the Desktop Animation Manager (DAM).
  626.  
  627.      enum {
  628.      #define gestaltDesktopAnimationMgr 'danm'
  629.      gestaltDesktopAnimationMgrPresent = 0}; /* if set, DAM is present */
  630.  
  631.      WARNING:
  632.      From the Preliminary Copland Headers. May change in the future.
  633.  
  634. dbac (System [7.0])
  635.      gestaltDBAccessMgrAttr
  636.      Returns information about the Data Access Manager.
  637.  
  638.      enum {
  639.      #define gestaltDBAccessMgrAttr 'dbac' /* Data Access Mgr attributes */
  640.      gestaltDBAccessMgrPresent = 0}; /* TRUE if Data Access Mgr present */
  641.  
  642. dfnd (PowerTalk ext [1.0?], part of PowerTalk)
  643.      gestaltSDPFindVersion
  644.      Returns the SDP Find version as INTEGER. Returns zero if not present
  645.      and available.
  646.  
  647.      #define gestaltSDPFindVersion 'dfnd' /* SDP Find version */
  648.  
  649. dict (System [7.1])
  650.      gestaltDictionaryMgrAttr
  651.      Returns information about the Dictionary Manager.
  652.  
  653.      enum {
  654.      #define gestaltDictionaryMgrAttr 'dict' /* Dictionary Mgr attributes */
  655.      gestaltDictionaryMgrPresent = 0};
  656.  
  657. ditl (System [7.0])
  658.      gestaltDITLExtAttr
  659.      Returns information about the Dialog Manager.
  660.  
  661.      enum {
  662.      gestaltDITLExtAttr 'ditl' /* Dialog Mgr attributes */
  663.      gestaltDITLExtPresent = 0}; /* Dialog Mgr extensions present */
  664.  
  665. dplv (Display Enabler [1.0?])
  666.      (System [7.1.1])
  667.      gestaltDisplayMgrVers &AS05
  668.      Returns Display Manager version as INTEGER?.
  669.  
  670.      #define gestaltDisplayMgrVers 'dplv' /* Display Mgr version */
  671.  
  672. dply (Display Enabler [1.0?])
  673.      (System [7.1.1])
  674.      gestaltDisplayMgrAttr &AS05
  675.      Returns information about the Display Manager.
  676.  
  677.      enum {
  678.      #define gestaltDisplayMgrAttr 'dply'     /* Display Mgr attr. */
  679.      gestaltDisplayMgrPresent           = 0,  /* True if Display Mgr is */
  680.                                               /*  present */
  681.      gestalt???                         = 1,  /* seen with System 7.5.2 */
  682.      gestaltDisplayMgrCanSwitchMirrored = 2,  /* True if Display Mgr can */
  683.                                               /*  switch modes on mirrored*/
  684.                                               /*  displays &AD21 */
  685.      gestaltDisplayMgrSetDepthNotifies  = 3}; /* True, SetDepth generates*/
  686.                                               /*  Display  Mgr */
  687.                                               /*  notification &AD21 */
  688.  
  689. drag (Macintosh Drag and Drop ext [1.0])
  690.      (System? [7.5?])
  691.      gestaltDragMgrAttr &AD05
  692.      Returns information about the Drag Manager.
  693.  
  694.      enum {
  695.      #define gestaltDragMgrAttr 'drag' /* Drag Manager attributes */
  696.      gestaltDragMgrPresent      =  0,  /* Drag Manager is present */
  697.      gestaltDragMgrFloatingWind =  1,  /* &AS09 */
  698.      gestaltPPCDragLibPresent   =  2,  /* &AS09 */
  699.      gestaltTranslucentDrags?   =  3,  /* SetDragImage function present */
  700.                                        /*  to drag semi-transparant */
  701.                                        /*  images instead of outlines? */
  702.                                        /*  (Anonymous) */
  703.      gestaltDragMgr???          = 31}; /* set with System 7.5 */
  704.  
  705. dsig (PowerTalk ext [1.0?], part of PowerTalk)
  706.      gestaltDigitalSignatureVersion
  707.      Returns version of the Digital Signature toolbox as BCD.
  708.  
  709.      #define gestaltDigitalSignatureVersion 'dsig' /* Digitial Signature */
  710.                                                    /*  version */
  711.  
  712. eajt (Easy Access cp [7.0])
  713.      gestaltEasyAccessJTable
  714.      Returns the base address of the Easy Access jump-trap table.
  715.  
  716.      #define gestaltEasyAccessJTable 'eajt' /* Easy Access jump-trap */
  717.                                             /*  table &M01 */
  718.  
  719. easy (Easy Access cp [6.0.4?])
  720.      gestaltEasyAccessAttr
  721.      Returns information about the status of Easy Access.
  722.  
  723.      enum {
  724.      gestaltEasyAccessAttr 'easy'  /* Easy Access attributes */
  725.      gestaltEasyAccessOff    = 0,  /* Easy Access present but off */
  726.      gestaltEasyAccessOn     = 1,  /* Easy Access on */
  727.      gestaltEasyAccessSticky = 2,  /* Easy Access "Sticky" */
  728.      gestaltEasyAccessLocked = 3}; /* Easy Access "Locked" */
  729.  
  730.      NOTE:
  731.      The values listed above are not returned with System 7 and later.
  732.      Because of a bug different values are returned. This problem is
  733.      acknowledged by Apple, but it is unclear when it will be fixed. They
  734.      know about it since September 1992... (Rene Ros)
  735.  
  736. edtn (System [7.0])
  737.      (Macintosh Easy Open cp [1.0?])
  738.      gestaltEditionMgrAttr
  739.      Returns information about the Edition Manager.
  740.  
  741.      enum{
  742.      #define gestaltEditionMgrAttr 'edtn' /* Edition Mgr attributes */
  743.      gestaltEditionMgrPresent          = 0,
  744.      gestaltEditionMgrTranslationAware = 1}; /* &AD03 */
  745.  
  746. evnt (System [7.0]) &AS05
  747.      (Apple Event Manager ext [1.0.1], part of AppleScript Setup)
  748.      gestaltAppleEventsAttr
  749.      Returns information about Apple Events.
  750.  
  751.      enum {
  752.      #define gestaltAppleEventsAttr 'evnt' /* Apple events attributes */
  753.      gestaltAppleEventsPresent = 0,  /* True if Apple Events present */
  754.                                      /*  &AS05 */
  755.      gestaltScriptingSupport   = 1,
  756.      gestaltOSLInSystem        = 2}; /* OSL is in system so don`t use */
  757.                                      /*  the one linked */
  758.  
  759.      NOTE:
  760.      These declarations in the AEObjects.h file (on ETO 14) should be
  761.      ignored:
  762.      gestaltObjectSupportLibraryInSystem = 1
  763.      gestaltObjectSupportLibraryPowerPCSupport = 2
  764.  
  765. Apple System Software (F-J)
  766. ===========================
  767. This chapter lists selector codes of which the meaning is known and the
  768. first character of the selector code is in the F-J range.
  769.  
  770. flag (Network Extension ext [System 7.0 &AT02])
  771.      gestaltFlagshipAttr
  772.      Returns information about the Flagship Naming Services.
  773.  
  774.      enum {
  775.      #define gestaltFlagshipAttr 'flag' /* &M01 */
  776.      gestaltFlagshipPresent    = 0,  /* &M01 */
  777.      gestaltFlagshipRegistered = 1}; /* &M01 */
  778.  
  779. fnd  (AppleShare? ext [3.6?]) &AD18
  780.      gestaltFinderVolumeGrade?
  781.      Returns a volume grade value. If the volume grade of a (remote) volume
  782.      the Finder (version 7.5.1 and later) is copying to is less than the
  783.      returned value, a buffer is used for which the size is returned by the
  784.      'fnd^' (666E 64A4) selector.
  785.  
  786.      #define gestaltFinderVolumeGrade? 'fnd '
  787.  
  788.      NOTE:
  789.      See also the 'fnd^' (666E 64A4) selector entry.
  790.  
  791.      AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
  792.      other selectors instead. The 'fnd ' selector seems to be replaced by
  793.      (OSType) 0x666E 64A0 (last byte: option-t). (Anonymous)
  794.  
  795. fnd^ (AppleShare? ext [3.6?]) &AD18
  796.      gestaltFinderBufferSize? (666E 64A4)
  797.      Returns the size of the buffer used to copy files to a (remote) volume
  798.      with a volume grade value less then the value returned by the 'fnd '
  799.      selector.
  800.  
  801.      #define gestaltFinderBufferSize? 'fnd^'
  802.  
  803.      NOTES:
  804.      The ^ is actually the option-6 character (0xA4).
  805.  
  806.      See also the 'fnd ' selector entry.
  807.  
  808.      AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
  809.      other selectors instead. The 'fnd ' selector seems to be replaced by
  810.      (OSType) 0x666E 64A7 (last byte: option-s). (Anonymous)
  811.  
  812. fndr (Finder [7.1.1]) &AS04
  813.      (Finder Scripting Extension ext [1.2?])
  814.      (Finder Clipping Extension ext [7.1.4?])
  815.      gestaltFinderAttr
  816.      Returns information about the Finder.
  817.  
  818.      enum {
  819.      #define gestaltFinderAttr 'fndr'
  820.      gestaltFinderDropEvent          = 0,
  821.      gestaltFinderMagicPlacement     = 1,
  822.      gestaltFinderCallsAEProcess     = 2,
  823.      gestaltOSLCompliantFinder       = 3,  /* supports Finder Event Suite */
  824.      gestaltFinderSupports4GBVolumes = 4,  /* implemented by System 7.5.1 */
  825.                                            /*  but bit not set? */
  826.      gestaltFinderHandlesCFMFailures = 5,
  827.      gestaltFinderHasClippings       = 6}; /* &AD12 */
  828.  
  829. fold (System [7.0])
  830.      gestaltFindFolderAttr
  831.      Returns information about the FindFolder function.
  832.  
  833.      enum {
  834.      gestaltFindFolderAttr 'fold'   /* FindFolder attributes */
  835.      gestaltFindFolderPresent = 0}; /* FindFolder function available */
  836.  
  837. font (System [7.0])
  838.      (TrueType INIT ext for System 6)
  839.      gestaltFontMgrAttr
  840.      Returns information about the Font Manager.
  841.  
  842.      enum {
  843.      #define gestaltFontMgrAttr 'font' /* Font Mgr attributes */
  844.      gestaltOutlineFonts     = 0,  /* TrueType present */
  845.      gestaltFontMgr???       = 1,  /* set with System 7.1 & 7.5 */
  846.      gestaltDiskCachedFonts? = 2}; /* Disk Cached Fonts available? */
  847.  
  848.      NOTE:
  849.      Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
  850.      with full subroutine names, there is a subroutine called
  851.      'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
  852.      of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
  853.  
  854. fpu  (System [6.0.4])
  855.      gestaltFPUType
  856.      Returns a value that indicates the FPU-type, if any.
  857.  
  858.      enum {
  859.      gestaltFPUType 'fpu ' /* FPU Type */
  860.      gestaltNoFPU    = 0,  /* no FPU */
  861.      gestalt68881    = 1,  /* 68881 FPU */
  862.      gestalt68882    = 2,  /* 68882 FPU */
  863.      gestalt68040FPU = 3}; /* built-in 68040 FPU &S01 */
  864.  
  865.      NOTE: See also the 'FPUE' entry in the Third Parties chapter.
  866.  
  867. fs   (720K Floppy Disk Formatter ext [1.0a3?],
  868.       part of the Hardware System Update [2.0])
  869.      (Apple Share ext [AS 3.0/SYS 7.0])
  870.      (File System Manager ext [1.2])
  871.      (System [7.0])
  872.      gestaltFSAttr
  873.      Returns information about the file system.
  874.  
  875.      enum {
  876.      #define gestaltFSAttr 'fs  ' /* file-system attributes */
  877.      gestaltFullExtFSDispatching = 0,  /* exports HFSDispatch traps */
  878.      gestaltHasFSSpecCalls       = 1,  /* supports FSSpec records */
  879.      gestaltHasFileSystemManager = 2,  /* has the File System Manager */
  880.                                        /*  &S01 */
  881.      gestaltFSMDoesDynamicLoad   = 3,  /* FSM supports dynamic loads */
  882.                                        /*  &AD12 */
  883.      gestaltFSSupports4GBVols    = 4,  /* FS supports 4 gigabyte volumes */
  884.                                        /*  &AD14 */
  885.      gestaltFSSupports2TBVols    = 5,  /* FS supports 2 terabyte volumes */
  886.                                        /*  and PBXGetVInfo available */
  887.                                        /*  &AD14 */
  888.      gestaltHasExtendedDiskInit  = 6}; /* has extended Disk */
  889.                                        /*  Initialization calls &AD12 */
  890.  
  891.      NOTES:
  892.      See also the gestaltFSMVersion ('fsm ') selector.
  893.  
  894.      See 'Reports' chapter (QuickTime section) for more information.
  895.  
  896. fsm  (File System Manager ext [1.2])
  897.      gestaltFSMVersion &AD14
  898.      Returns File System Manager version as BCD.
  899.  
  900.      #define gestaltFSMVersion 'fsm '
  901.  
  902.      NOTE:
  903.      See also the gestaltFSAttr ('fs  ') selector.
  904.  
  905.      While both FSM 1.2 and System 7.5 install/patch three traps
  906.      (_FileSysMgr, _HFSUtils and _Pack2 (Extended Disk Initialization
  907.      Package)) it happens that System 7.5 does not install the
  908.      gestaltFSMVersion ('fsm ') selector. It does set the FSM related bits
  909.      of the gestaltFSAttr ('fs  ') selector. (Fabrizio Oddone)
  910.      This selector is correctly installed by System 7.5.1. (Rene Ros)
  911.  
  912. fxfr (System [7.0])
  913.      gestaltFXfrMgrAttr
  914.      Returns information about the File Transfer Manager.
  915.  
  916.      enum {
  917.      #define gestaltFXfrMgrAttr 'fxfr' /* File Transfer Mgr attributes */
  918.      gestaltFXfrMgrPresent     = 0,   /* File Transfer Mgr present */
  919.      gestaltFXfrMgrMultiFile   = 1,   /* supports FTSend and FTReceive */
  920.                                       /*  &AS02 */
  921.      gestaltFXfrMgrErrorString = 2,   /* supports FTGetErrorString */
  922.                                       /*  &AS02/S02 */
  923.      gestaltFXfrMgr???         = 3?}; /* new, see future technote */
  924.                                       /*  set with System 7.5 */
  925.  
  926. gval (GestaltValue glue code)
  927.      gestaltValueTable?
  928.      Returns a pointer to a table with the selectors and values managed
  929.      by the GestaltValue code. (Marco Piovanelli)
  930.  
  931.      #define gestaltValueTable? 'gval'
  932.  
  933.      WARNING:
  934.      Although this information isn't officially confirmed, it is probably
  935.      correct.
  936.  
  937.      NOTES:
  938.      Although System 7.5 implements the GestaltValue functions it does not
  939.      install this selector because the GestaltValue table is combined with
  940.      the normal Gestalt table (See the 'tabl' entry). Only with system
  941.      software before 7.5 this selector is installed by the glue code.
  942.      (Rene Ros)
  943.  
  944.      See 'Reports' chapter (GestaltValue section) for more information.
  945.  
  946. hdwr (System [6.0.4]) INF
  947.      gestaltHardwareAttr
  948.      Returns information about the hardware configuration of the machine.
  949.  
  950.      enum {
  951.      #define gestaltHardwareAttr 'hdwr' /* hardware attributes */
  952.      gestaltHasVIA1         =  0,  /* VIA 1 */
  953.      gestaltHasVIA2         =  1,  /* VIA 2 */
  954.      gestaltHasRBV          =  2,  /* RBV &M01 */
  955.      gestaltHasASC          =  3,  /* ASC (or compatible with) */
  956.      gestaltHasSCC          =  4,  /* SCC &M01 */
  957.      gestaltHasOSS          =  5,  /* OSS &M01 */
  958.      gestaltHasSCSIDMA      =  6,  /* 53C80 SCSI DMA &M01 */
  959.      gestaltHasSCSI         =  7,  /* 53C80 SCSI */
  960.      gestaltHasSWIMIOP      =  8,  /* SWIM IOP &M01 */
  961.      gestaltHasSCCIOP       =  9,  /* SCC IOP &M01 */
  962.      gestaltHasFitch        = 10,  /* Fitch memory Controller &M02 */
  963.      gestaltHasIWM          = 11,  /* IWM &M01 */
  964.      gestaltHasPWM          = 12,  /* PWM disk speed buffer &M02 */
  965.      gestaltHasRAMSndBuff   = 13,  /* RAM-based sound buffer &M02 */
  966.      gestaltHasVideoDAConv  = 14,  /* Video D/A Converter &M02 */
  967.      gestaltHasPGC          = 15,  /* PGC (parity control) &M02 */
  968.      gestaltHasRPU?         = 16,  /* Random Parity Unit */
  969.      gestaltHasOMC?         = 17,  /* Orwell Memory Controller */
  970.      gestaltHasVISARBV?     = 18,  /* VISA Ram Based Video */
  971.      gestaltHasSoftPowerOff = 19,  /* Software PowerOff */
  972.                                    /*  (since System 7.0?) &S01 */
  973.      gestaltHasSonic        = 20,  /* Sonic (built-in ethernet) &M01 */
  974.      gestaltHasSCSI961      = 21,  /* Int. 53C96 SCSI &AT01 */
  975.      gestaltHasSCSI962      = 22,  /* Ext. 53C96 SCSI &AT01 */
  976.      gestaltHasDAFBVideo    = 23,  /* DAFB Video &M01 */
  977.      gestaltHasUniversalROM = 24,  /* Universal ROM &AT04 */
  978.      gestaltHasJMC          = 25,  /* Jaws Memory Controller? */
  979.      gestaltNeedsRESET      = 27,  /* ??? set on PowerMac, C660AV and */
  980.                                    /*  under MAE 1.0 */
  981.      gestaltHasEnhancedLtalk= 30}; /* Enhanced LocalTalk &AD21 */
  982.  
  983.      NOTES:
  984.      See for additional information the TN "M.OV.GestaltSysenvirons" (OV 16).
  985.  
  986.      On the Mac IIfx and Quadra 900 the gestaltHasSCC bit always returns 0
  987.      because the SCC is isolated by I/O processors. When the Compatibility
  988.      Switch control panel is used the bit is set. &AD12
  989.  
  990.      The old IM VI listed this selector as an environmental selector but
  991.      IM OS Utilities now lists it as an informational selector.
  992.  
  993. help (System [7.0])
  994.      gestaltHelpMgrAttr
  995.      Returns information about the Help Manager.
  996.  
  997.      enum {
  998.      #define gestaltHelpMgrAttr 'help' /* Help Mgr attributes */
  999.      gestaltHelpMgrPresent    =  0,  /* Help Mgr present */
  1000.      gestaltHelpMgrExtensions =  1,  /* Help Mgr extensions installed */
  1001.                                      /*  &AS03 */
  1002.      gestaltAppleGuideIsDebug = 30,  /* Apple Guide is debugging version */
  1003.                                      /*  &AS12 */
  1004.      gestaltAppleGuidePresent = 31}; /* Apple Guide is available &AS12 */
  1005.  
  1006. hscd (High Sierra File Access ext [5.0], part of Apple CD-ROM Software) 
  1007.      (ISO 9660 File Access ext [1.0-4.0], part of Apple CD-ROM Software)
  1008.      gestaltHighSierraVersion? &AT03
  1009.      Returns High Sierra File Access version in BCD.
  1010.  
  1011.      #define gestaltHighSierraVersion? 'hscd' /* High Sierra Fileaccess */
  1012.                                               /*  version */
  1013.  
  1014.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1015.  
  1016. icmp (QuickTime ext [1.0])
  1017.      gestaltCompressionMgr
  1018.      Returns Compression Manager version as Integer.
  1019.  
  1020.      #define gestaltCompressionMgr 'icmp' /* determines if Image */
  1021.                                           /*  Compression manager is */
  1022.                                           /*  available &AS01 */
  1023.  
  1024. icon (System 7.5 Update ext [1.0])
  1025.      gestaltIconUtilities
  1026.      Returns information about the Icon Utilities routines.
  1027.  
  1028.      enum {
  1029.      #define gestaltIconUtilities 'icon' /* Icon Utils attributes */
  1030.      gestaltIconUtilitiesPresent = 0};
  1031.  
  1032.      NOTE:
  1033.      This selector is supposed to be implemented since System 7.1.2. You
  1034.      need to determine if the _IconDispatch A-trap (0xAB49) is available
  1035.      instead since the Icon Utilities are actually available since
  1036.      System 7.0. &AD13/AT01
  1037.      System 7.5.1 finally implements this selector. (Anonymous)
  1038.  
  1039. iic  (System? [7.5?])
  1040.      gestaltIICAttr &AS19
  1041.      Returns information about the Inter-Integrated Circuit Bus (IIC).
  1042.  
  1043.      enum {
  1044.      #define gestaltIICAttr 'iic ' /* Inter-Integrated Circuit Bus */
  1045.      gestaltStdIIC         = 0,    /* standard IIC */
  1046.      gestaltCombinedIIC    = 1,    /* combined format IIC */
  1047.      gestaltExtendedIIC    = 2,    /* extended IIC */
  1048.      gestaltMultiIIC       = 3,    /* multiple bus master IIC */
  1049.      gestaltGeneralCallIIC = 4,    /* general call IIC */
  1050.      gestaltFastIIC        = 5};   /* fast IIC */
  1051.  
  1052. intd (Powerbook Duo Enabler [1.0])
  1053.      (System [7.5])
  1054.      (System Enabler 111 [1.0])
  1055.      (System Enabler 121 [1.0])
  1056.      (System Enabler 131 [1.0])
  1057.      (System Enabler 201 [1.0])
  1058.      gestaltInternalDiskAttr?
  1059.      Returns information about the internal harddisk of portable
  1060.      computers?
  1061.  
  1062.      enum {
  1063.      #define gestaltInternalDiskAttr? 'intd' /* PB Internal HD attr. */
  1064.      gestaltHasInternalDisk? =  0,  /* TRUE if machine has internal HD */
  1065.      gestaltDiskSpinning?    =  1,  /* TRUE if internal HD is spon up */
  1066.      gestalt???              = 24}; /* unknown, set on PB180, PB210, */
  1067.                                     /*  PB540 and others? */
  1068.  
  1069.      WARNING:
  1070.      This information is from a reliable source. However, is it not
  1071.      officially confirmed by Apple and there are no constants defined.
  1072.  
  1073.      NOTE:
  1074.      On a PB Duo 210 (PowerBook Duo Enabler) I haven't seen bit 1 set with
  1075.      System 7.1, even when the disk is spinning. It is also reported the
  1076.      bit is clear when the disk is spinning and set when down (seen on
  1077.      PB Duo 230). (David Lewis, Rene Ros)
  1078.      This problem seems to be fixed with System 7.5.1. (Rene Ros)
  1079.  
  1080. iscd (ISO 9660 File Access ext [5.0], part of Apple CD-ROM Software)
  1081.      gestaltISO9660Version?
  1082.      Returns ISO 9660 File Access version in BCD?.
  1083.  
  1084.      #define gestaltISO9660Version? 'iscd'
  1085.  
  1086.      NOTE:
  1087.      Versions before 5.0 installed the 'hscd' selector.
  1088.  
  1089. Apple System Software (K-N)
  1090. ===========================
  1091. This chapter lists selector codes of which the meaning is known and the
  1092. first character of the selector code is in the K-N range.
  1093.  
  1094. kbd  (System [6.0.4])
  1095.      gestaltKeyboardType
  1096.      Returns a value that indicates the type of keyboard on which the last
  1097.      keystroke was seen.
  1098.  
  1099.      enum {
  1100.      #define gestaltKeyboardType 'kbd ' /* keyboard type */
  1101.      gestaltMacKbd            =  1,  /* Macintosh Keyboard */
  1102.      gestaltMacAndPad         =  2,  /* Macintosh Keyboard with Pad */
  1103.      gestaltMacPlusKbd        =  3,  /* Macintosh Plus Keyboard */
  1104.      gestaltExtADBKbd         =  4,  /* Extended ADB Keyboard */
  1105.      gestaltStdADBKbd         =  5,  /* Standard ADB Keyboard */
  1106.      gestaltPrtblADBKbd       =  6,  /* Portable ADB Keyboard */
  1107.      gestaltPrtblISOKbd       =  7,  /* Portable ISO ADB Keyboard */
  1108.      gestaltStdISOADBKbd      =  8,  /* Standard ISO ADB Keyboard */
  1109.      gestaltExtISOADBKbd      =  9,  /* Extended ISO ADB Keyboard */
  1110.      gestaltADBKbdII          = 10,  /* ADB Keyboard II */
  1111.      gestaltElmerKbd          = 10,  /* = gestaltADBKbdII, used in some */
  1112.                                      /*  sample code */
  1113.      gestaltADBISOKbdII       = 11,  /* ISO ADB Keyboard II */
  1114.      gestaltElmerISOKbd       = 11,  /* = gestaltADBISOKbdII, used in */
  1115.                                      /*  some sample code */
  1116.      gestaltPwrBookADBKbd     = 12,  /* PowerBook Keyboard &AT01 */
  1117.      gestaltPwrBookISOADBKbd  = 13,  /* PowerBook Keyboard (ISO) &AT01 */
  1118.      gestaltAppleAdjustKeypad = 14,  /* Apple Adjustable Keypad &AT01 */
  1119.      gestaltAppleAdjustADBKbd = 15,  /* Apple Adjustable Keyboard, incl. */
  1120.                                      /*  US, ISO and Japanese &AT01 */
  1121.  
  1122.      /* PowerBook Extended Keyboards &AS15 */
  1123.      gestaltPwrBkExtISOKbd    = 20,  /* PowerBook Extended Intl. */
  1124.      gestaltPwrBkExtJISKbd    = 21,  /* PowerBook Extended Japanese */
  1125.      gestaltPwrBkExtADBKbd    = 24}; /* PowerBook Extended Domestic */
  1126.  
  1127.      ======================================================================
  1128.      Combinations of System Global KbdType/ADB Mgr devType and
  1129.      gestaltKeyboardType values                                       &AT01
  1130.      ======================================================================
  1131.      KbdType    gestaltKeyboardType     Gestalt Name
  1132.      (hex.)     (decimal)
  1133.      ----------------------------------------------------------------------
  1134.       0x03          1                   gestaltMacKbd
  1135.       0x13          2                   gestaltMacAndPad
  1136.       0x0B          3                   gestaltMacPlusKbd
  1137.       0x02          4                   gestaltExtADBKbd
  1138.       0x01          5                   gestaltStdADBKbd
  1139.       0x06          6                   gestaltPrtblADBKbd
  1140.       0x07          7                   gestaltPrtblISOKbd
  1141.       0x04          8                   gestaltStdISOADBKbd
  1142.       0x05          9                   gestaltExtISOADBKbd
  1143.       0x08         10                   gestaltADBKbdII
  1144.       0x09         11                   gestaltADBISOKbdII
  1145.       0x0C         12                   gestaltPwrBookADBKbd
  1146.       0x0D         13                   gestaltPwrBookISOADBKbd
  1147.       0x0E         14                   gestaltAppleAdjustKeypad
  1148.       0x10         15                   gestaltAppleAdjustADBKbd, US
  1149.       0x11         15                   gestaltAppleAdjustADBKbd, ISO
  1150.       0x12         15                   gestaltAppleAdjustADBKbd, Japanese
  1151.       0x13         20                   gestaltPwrBkExtISOKbd ?
  1152.       0x14         21                   gestaltPwrBkExtJISKbd ?
  1153.       0x17         24                   gestaltPwrBkExtADBKbd ?
  1154.      ----------------------------------------------------------------------
  1155.  
  1156.      NOTES:
  1157.      The Apple Adjustable Keyboard doesn't have its own Gestalt keyboard
  1158.      type defined with some versions of System Software (7.1?). It changes
  1159.      a low memory global but this doesn't change the Gestalt response. This
  1160.      problem is corrected by the Hardware System Update 2.0 and later.
  1161.  
  1162.      If the keyboard isn't recognized by the Gestalt Mgr, an error is
  1163.      returned. &AD19
  1164.  
  1165.      The PowerMac 7100/66 (System 7.1.2) doesn't install this selector for
  1166.      some reason. Other Macs with Gestalt version 4 do, so it isn't
  1167.      intentional.
  1168.  
  1169.      You may find a GestaltEqu header file which listes the Extended ADB
  1170.      keyboard as three different types (Dometic, International and
  1171.      Japanese) instead of one as later was corrected by Apple.
  1172.      The KbdType numbers for the PowerBook Extended Keyboards were found
  1173.      with the PTCH 5 resource of the Hardware System Update 2.0.
  1174.      (Rene Ros)
  1175.  
  1176.      Since this selector returns the type of the keyboard last touched
  1177.      and because there can be more than one keyboard, MacDTS considers this
  1178.      selector to be obsolete. You should use GetADBInfo instead and check
  1179.      the orgADBAddr field for a keyboard (0x02) and the devType field
  1180.      contains the keyboard device type. It uses the same values as the
  1181.      KbdType low memory variable, see the table above. &AD07/AT01
  1182.  
  1183. kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) &AT03
  1184.      gestaltApplePhotoAccessVersion?
  1185.      Returns Apple Phote Access version in BCD.
  1186.  
  1187.      #define gestaltApplePhotoAccessVersion? 'kpcd'
  1188.  
  1189.      NOTE:
  1190.      The above is what the documentation says. However it seems to return
  1191.      always 0xFFFFFF7 as response.
  1192.  
  1193. lmem (System [6.0.4])
  1194.      gestaltLowMemorySize
  1195.      Returns the amount of the low-memory area in bytes.
  1196.  
  1197.      #define gestaltLowMemorySize 'lmem' /* low-memory area size */
  1198.  
  1199. lram (System [6.0.4])
  1200.      gestaltLogicalRAMSize
  1201.      Returns the amount of logical memory available in bytes.
  1202.  
  1203.      #define gestaltLogicalRAMSize 'lram' /* logical RAM size */
  1204.  
  1205.      NOTE:
  1206.      The returned value may not be accurate because an adjustment to the
  1207.      number is performed to yield the best possible estimate of the
  1208.      remaining RAM. The discrepancy is usually because of different color
  1209.      depth settings for on-board video and because of the NanoKernel
  1210.      (68K emulator on Power Macintosh computers). The latter takes about
  1211.      870K. &AD18
  1212.  
  1213. mach (System [6.0.4]) INF
  1214.      gestaltMachineType
  1215.      Returns one of the following values, indicating the type of
  1216.      machine.
  1217.  
  1218.      enum {
  1219.      #define gestaltMachineType 'mach' /* machine type */
  1220.  
  1221.      /* RELEASED COMPUTERS */
  1222.      gestaltClassic             =   1, /* Macintosh 128K and 512 */
  1223.      gestaltMacXL               =   2, /* Macintosh XL */
  1224.      gestaltMac512KE            =   3, /* Macintosh 512KE */
  1225.      gestaltMacPlus             =   4, /* Macintosh Plus */
  1226.      gestaltMacSE               =   5, /* Macintosh SE */
  1227.      gestaltMacII               =   6, /* Macintosh II */
  1228.      gestaltMacIIx              =   7, /* Macintosh IIx */
  1229.      gestaltMacIIcx             =   8, /* Macintosh IIcx */
  1230.      gestaltMacSE030            =   9, /* Macintosh SE/30 */
  1231.      gestaltPortable            =  10, /* Macintosh Portable */
  1232.      gestaltMacPortable         =  10, /* = gestaltPortable &AD18 */
  1233.      gestaltMacIIci             =  11, /* Macintosh IIci */
  1234.      gestaltMacIIfx             =  13, /* Macintosh IIfx */
  1235.      gestaltMacClassic          =  17, /* Macintosh Classic */
  1236.      gestaltMacIIsi             =  18, /* Macintosh IIsi */
  1237.      gestaltMacLC               =  19, /* Macintosh LC */
  1238.      gestaltQuadra900           =  20, /* Macintosh Quadra 900 &AT01 */
  1239.      gestaltPowerBook170        =  21, /* Macintosh PowerBook 170 &AT01 */
  1240.      gestaltQuadra700           =  22, /* Macintosh Quadra 700 &AT01 */
  1241.      gestaltClassicII           =  23, /* Macintosh Classic II &AT01 */
  1242.      gestaltPowerBook100        =  24, /* Macintosh PowerBook 100 &AT01 */
  1243.      gestaltPowerBook140        =  25, /* Macintosh PowerBook 140 &AT01 */
  1244.      gestaltQuadra950           =  26, /* Macintosh Quadra 950 &AT01 */
  1245.      gestaltMacLCIII            =  27, /* Macintosh LC III */
  1246.      gestaltPerforma450         =  27, /* = gestaltMacLCIII &AD18 */
  1247.      gestaltPowerBook210        =  29, /* Macintosh PowerBook 210 */
  1248.      gestaltPowerBookDuo210     =  29, /* = gestaltPowerBook210 &AD18 */
  1249.      gestaltMacCentris650       =  30, /* Macintosh Centris 650 */
  1250.      gestaltPowerBook230        =  32, /* Macintosh PowerBook 230 */
  1251.      gestaltPowerBookDuo230     =  32, /* = gestaltPowerBook230 &AD18 */
  1252.      gestaltPowerBook180        =  33, /* Macintosh PowerBook 180 */
  1253.      gestaltPowerBook160        =  34, /* Macintosh PowerBook 160 */
  1254.      gestaltMacQuadra800        =  35, /* Macintosh Quadra 800 */
  1255.      gestaltMacQuadra650        =  36, /* Macintosh Quadra 650 &AT01 */
  1256.      gestaltMacLCII             =  37, /* Macintosh LC II */
  1257.      gestaltPerforma40x         =  37, /* =gestaltMacLCII */
  1258.                                        /*  Performa 400 Series &AT01 */
  1259.      gestaltPerforma430         =  37, /* =gestaltMacLCII */
  1260.                                        /*  Performa 400 Series &AT01 */
  1261.      gestaltPowerBookDuo250     =  38, /* Macintosh PowerBook Duo 250 */
  1262.                                        /*  &AT01 */
  1263.      gestaltPowerMac9150        =  39, /* Power Macintosh 9150 &AT01 */
  1264.      gestaltAWS9150_80          =  39, /*  = gestaltPowerMac9150 */
  1265.                                        /*  Workgroup Server 9150/80 */
  1266.                                        /*  &AD18 */
  1267.      gestaltPowerMac8100_110    =  40, /* Power Macintosh 8100/110 and */
  1268.                                        /*  Power Macintosh 8115/10 &AD18 */
  1269.      gestaltPowerMac5200_75     =  41, /* Power Macintosh 5200/75 &AT01 */
  1270.                                        /*   and Power Macintosh 5300 */
  1271.      gestaltPowerMac6200        =  42, /* Power Macintosh 6200 */
  1272.      gestaltMacIIvi             =  44, /* Macintosh IIvi */
  1273.      gestaltPerforma600         =  45, /* Macintosh Performa 600 */
  1274.      gestaltMacIIvm             =  45, /* = gestaltPerforma600 &AD18 */
  1275.      gestaltPowerMac7100_80     =  47, /* Power Macintosh 7100/80 &AD18 */
  1276.      gestaltMacIIvx             =  48, /* Macintosh IIvx */
  1277.      gestaltMacColorClassic     =  49, /* Macintosh Color Classic */
  1278.      gestaltPerforma250         =  49, /* = gestaltMacColorClassic &AD18 */
  1279.      gestaltPowerBook165c       =  50, /* Macintosh PowerBook 165c */
  1280.      gestaltMacCentris610       =  52, /* Macintosh Centris 610 */
  1281.      gestaltMacQuadra610        =  53, /* Macintosh Quadra 610 &AT01 */
  1282.      gestaltPowerBook145        =  54, /* Macintosh PowerBook 145 and */
  1283.                                        /*  145b &AT01 */
  1284.      gestaltPowerMac8100_100    =  55, /* Power Macintosh 8100/100 &AD18 */
  1285.      gestaltMacLC520            =  56, /* Macintosh LC 520 &AT01 */
  1286.      gestaltAWS9150_120         =  57, /* Workgroup Server 9150/120 */
  1287.                                        /*  &AD23 */
  1288.      gestaltMacCentris660AV     =  60, /* Macintosh Centris 660AV &AT01 */
  1289.      gestaltPerforma460         =  62, /* Macintosh Performa 460 */
  1290.      gestaltPerforma46x         =  62, /* = gestaltPerforma460 &AD18 */
  1291.      gestaltPowerMac8100_80     =  65, /* Power Macintosh 8100/80 */
  1292.      gestaltPowerMac9500        =  67, /* Power Macintosh 9500/120 and */
  1293.                                        /*  Power Macintosh 9500/132 */
  1294.                                        /*  &AT01 */
  1295.      gestaltPowerMac7500        =  68, /* Power Macintosh 7500 */
  1296.      gestaltPowerMac8500        =  69, /* Power Macintosh 8500 */
  1297.      gestaltPowerBook180c       =  71, /* Macintosh PowerBook 180c &AT01 */
  1298.      gestaltPowerBook520_540    =  72, /* Macintosh PowerBook 520/520c */
  1299.                                        /*  and 540/540c use Power Mgr */
  1300.                                        /*  call MaximumProcessorSpeed: */
  1301.                                        /*  25 and 33 mHz resp. &AT01 */
  1302.      gestaltPowerBook500        =  72, /* = gestaltPowerBook520_540 */
  1303.                                        /*  &AD18 */
  1304.                                        /*  Macintosh PowerBook 500 */
  1305.                                        /*  series */
  1306.      gestaltPowerMac6100_60     =  75, /* Power Macintosh 6100/60 */
  1307.      gestaltPerforma611x        =  75, /* =gestaltPowerMac6100_60 */
  1308.                                        /* Performa 611x Series &AT01 */
  1309.      gestaltPowerBookDuo270c    =  77, /* Macintosh PowerBook Duo 270c */
  1310.                                        /*  &AT01 */
  1311.      gestaltMacQuadra840AV      =  78, /* Macintosh Quadra 840AV &AT01 */
  1312.      gestaltMacLC550            =  80, /* Macintosh LC 550 &AT01 */
  1313.      gestaltPerforma550         =  80, /* = gestaltMacLC550 &AD18 */
  1314.      gestaltPerforma560         =  80, /* = gestaltMacLC550 &AT01 */
  1315.      gestaltMacColorClassicII?  =  83, /* Macintosh Color Classic II */
  1316.      gestaltPowerBook165        =  84, /* Macintosh PowerBook 165 &AT01 */
  1317.      gestaltPowerBook190        =  85, /* Macintosh PowerBook 190 */
  1318.                                        /*  Macintosh PowerBook 190cs ? */
  1319.                                        /*  &AD25 */
  1320.                                        /*  ALERT! According to Dev. */
  1321.                                        /*  Note, same as Q650 PPC */
  1322.                                        /*  upgrade card? Value 85 */
  1323.                                        /*  returned on a PB190cs */
  1324.                                        /*  prototype? (Anonymous) */
  1325.      gestaltMacTV               =  88, /* Macintosh TV */
  1326.      gestaltMacLC475            =  89, /* Macintosh LC 475 &AT01 */
  1327.      gestaltPerforma47x         =  89, /* = gestaltMacLC475 &AD18 */
  1328.      gestaltMacLC575            =  92, /* Macintosh LC 575 &AT01 */
  1329.      gestaltPerforma57x         =  92, /* = gestaltMacLC575 &AT01 */
  1330.      gestaltMacQuadra605        =  94, /* Macintosh Quadra 605 &AT01 */
  1331.      gestaltMacLC630            =  98, /* Macintosh LC 630, see below */
  1332.                                        /*  &AT01 */
  1333.      gestaltMacQuadra630        =  98, /* Macintosh Quadra 630 &AT01 */
  1334.                                        /*  Q630 has MC68040, LC 630 has */
  1335.                                        /*  MC68LC040 but can upgrade */
  1336.      gestaltMac630              =  98, /* = gestaltMacLC630 */
  1337.                                        /*  = gestaltMacQuadra630 */
  1338.                                        /*  Macintosh 630 series &AD18 */
  1339.      gestaltTellShow            =  98, /* = gestaltMacLC630 */
  1340.                                        /*  = gestaltMacQuadra630 */
  1341.                                        /*  = gestaltMac630 */
  1342.                                        /*  Codename for LC630 &AD16 */
  1343.      gestaltMacLC580            =  99, /* Macintosh LC 580 &AD18 */
  1344.      gestaltTellXfmr            =  99, /* = gestaltMacLC580 */
  1345.                                        /*  Codename LC580 &AD16 */
  1346.      gestaltPerforma580         =  99, /* = gestaltMacLC580 &AT01 */
  1347.      gestaltPowerMac6100_66     = 100, /* Power Macintosh 6100/66 */
  1348.      gestaltPowerBookDuo280     = 102, /* Macintosh PowerBook Duo 280 */
  1349.      gestaltPowerBookDuo280c    = 103, /* Macintosh PowerBook Duo 280c*/
  1350.      gestaltPowerMac7200        = 108, /* Power Macintosh 7200/75 */
  1351.                                        /*  Power Macintosh 7200/90 ? */
  1352.      gestaltPowerMac7100_66     = 112, /* Power Macintosh 7100/66 */
  1353.      gestaltPowerBook150        = 115, /* Macintosh PowerBook 150 */
  1354.      gestaltPowerBook2300?      = 124, /* Macintosh PowerBook 2300c */
  1355.                                        /*  &AD27/AT01 */
  1356.      gestaltPowerBook5300       = 128, /* Macintosh PowerBook 5300, */
  1357.                                        /*  Macintosh PowerBook 5300c, */
  1358.                                        /*  Macintosh PowerBook 5300cs, */
  1359.                                        /*  and Macintosh PowerBook */
  1360.                                        /*  5300ce &AT01/AD26 See also */
  1361.                                        /*  #129 in OBSERVED MACHINE */
  1362.                                        /*  VALUES IN SYSTEM SOFTWARE */
  1363.                                        /*  part */
  1364.  
  1365.      /* RELEASED UPGRADE CARDS (&AD18 and &AT01) */
  1366.      gestaltPowerMac475         = 104, /* LC475, P47x and Q605 PPC */
  1367.      gestaltPowerMacLC475       = 104, /* = gestaltPowerMac475 */
  1368.      gestaltPowerMacPerforma47x = 104, /* = gestaltPowerMac475 */
  1369.                                        /*  = gestaltPowerMacLC475 */
  1370.      gestaltPowerMac575         = 105, /* LC575 and P57x PPC */
  1371.      gestaltPowerMacLC575       = 105, /* = gestaltPowerMac575 */
  1372.      gestaltPowerMacPerforma57x = 105, /* = gestaltPowerMac575 */
  1373.                                        /*  = gestaltPowerMacLC575 */
  1374.      gestaltPowerMac630         = 106, /* Q630, LC630 and P63x PPC */
  1375.      gestaltPowerMacQuadra630   = 106, /* = gestaltPowerMac630 */
  1376.      gestaltPowerMacLC630       = 106, /* = gestaltPowerMac630 */
  1377.                                        /*  = gestaltPowerMacQuadra630 */
  1378.      gestaltPowerMacPerforma63x = 106, /* = gestaltPowerMac630 */
  1379.                                        /*  = gestaltPowerMacQuadra630 */
  1380.                                        /*  = gestaltPowerMacLC630 */
  1381.      gestaltPowerMac580         = 107, /* LC580 (and P58x?) PPC */
  1382.      gestaltPowerMacLC580       = 107, /* = gestaltPowerMac580 */
  1383.      gestaltPowerMac700         = 116, /* Q700 PPC */
  1384.      gestaltPowerMacQuadra700   = 116, /* = gestaltPowerMac700 */
  1385.      gestaltPowerMac900         = 117, /* Q900 PPC */
  1386.      gestaltPowerMacQuadra900   = 117, /* = gestaltPowerMac900 */
  1387.      gestaltPowerMac950         = 118, /* Q950 PPC */
  1388.      gestaltPowerMacQuadra950   = 118, /* = gestaltPowerMac950 */
  1389.      gestaltPowerMacC610        = 119, /* C610 PPC */
  1390.      gestaltPowerMacCentris610  = 119, /* = gestaltPowerMacC610 */
  1391.      gestaltPowerMacC650        = 120, /* C650 PPC */
  1392.      gestaltPowerMacCentris650  = 120, /* = gestaltPowerMacC650 */
  1393.      gestaltPowerMacQ610        = 121, /* Q610 PPC */
  1394.      gestaltPowerMacQuadra610   = 121, /* = gestaltPowerMacQ610 */
  1395.      gestaltPowerMacQ650        = 122, /* Q650 PPC */
  1396.      gestaltPowerMacQuadra650   = 122, /* = gestaltPowerMacQ650 */
  1397.      gestaltPowerMac800         = 123, /* Q800 PPC */
  1398.      gestaltPowerMacQuadra800   = 123, /* = gestaltPowerMacQ800 */
  1399.      gestaltPPCPowerBook520_540 = 124, /* Macintosh PowerBook 5xx PPC */
  1400.                                        /*  upgrade card &AD28/AT01 */
  1401.  
  1402.      /* NEVER TO BE RELEASED */
  1403.      /* The following machine values are used by not to be released ROM */
  1404.      /* images. If you observe any of these values, it's a prerelease */
  1405.      /* system. */
  1406.      gestaltPowerMac6100_66?    =  46, /* Power Macintosh 6100/66 */
  1407.      gestaltPowerMac8100_100?   =  66, /* Power Macintosh 8100/100 */
  1408.      gestaltPowerMac7100_80?    = 113, /* Power Macintosh 7100/80 */
  1409.  
  1410.      /* UNKNOWN RELEASED COMPUTERS */
  1411.      gestaltPowerBook550c?      = ???, /* Macintosh PowerBook 550c */
  1412.  
  1413.      /* OBSERVED UNRELEASED COMPUTERS */
  1414.      gestaltPowerMac8100_120    =  12, /* Power Macintosh 8100/120 */
  1415.      gestalt???                 =  43, /* pre-release Tempest/Cyclone */
  1416.      gestalt???                 =  51, /* System 7.5 Update 2.0 */
  1417.      gestalt???                 =  59, /* System 7.5 Update 1.0 */
  1418.      gestaltPowerMac8100_60?    =  61, /* Power Macintosh 8100/80 */
  1419.                                        /*  running at 60 MHz}
  1420.      gestaltPowerMac8100_60?    =  64, /* Power Macintosh 8100/60 and */
  1421.                                        /*  Power Macintosh 8100/80 */
  1422.                                        /*  when running at 66.6 MHz */
  1423.      gestalt???                 =  74, /* pre-release Power Mac named */
  1424.                                        /*  'PDM Evt 1 (R.I.P.)' */
  1425.      gestaltLC475_20?           =  86, /* Q605 as a LC475 at 20 Mhz */
  1426.                                        /*  instead of 25 Mhz */
  1427.      gestaltLC575_20?           =  87, /* LC575 at 20 MHz instead of */
  1428.                                        /*  33 MHz */
  1429.      gestaltLC475_33?           =  90, /* Q605 as a LC475 at 33 Mhz */
  1430.                                        /*  instead of 25 Mhz */
  1431.      gestaltLC575_25?           =  91, /* LC575 at 25 MHz instead of */
  1432.                                        /*  33 MHz */
  1433.      gestaltQ605_20?            =  93, /* Q605 at 20 Mhz instead of */
  1434.                                        /*  25 MHz */
  1435.      gestaltQ605_33?            =  95, /* Q605 at 33 Mhz instead of */
  1436.                                        /*  25 MHz */
  1437.      gestaltPowerMac6100_80?    = 101, /* Power Macintosh 6100/80 */
  1438.      gestaltPowerMac7100_60?    = 111, /* Power Macintosh 7100/60 */
  1439.      gestaltPowerMac7100_80b?   = 113, /* PM 7100/66 at 80 Mhz */
  1440.                                        /* value <> PM 7100/80 ! */
  1441.      gestaltPowerMac7100_82?    = 114, /* Macintosh 7100/82 */
  1442.  
  1443.      /* OBSERVED MACHINE VALUES IN SYSTEM SOFTWARE */
  1444.      /* these values were found in enablers, either in the gbly */
  1445.      /* resource or in the machine name STR# resource. */
  1446.      gestaltPaulaMac?           =  31, /* "Paula's Desk Macintosh" in */
  1447.                                        /*  PowerPC Enabler 1.1 */
  1448.      gestalt???                 =  63, /* System 7.5 Update 2.0 */
  1449.      gestalt???                 =  73, /* System 7.5 Update 1.0 */
  1450.      gestalt???                 =  79, /* System 7.5 Update 2.0 */
  1451.      gestalt???                 =  81, /* System 7.5 Update 1.0 */
  1452.      gestalt???                 = 114, /* System 7.5 Update 1.0 */
  1453.      gestalt???                 = 125, /* MAE Enabler */
  1454.      gestalt???                 = 126, /* MAE Enabler */
  1455.      gestaltPowerBook5300?      = 129, /* Macintosh PowerBook 5300, */
  1456.                                        /*  Macintosh PowerBook 5300c, */
  1457.                                        /*  Macintosh PowerBook 5300cs, */
  1458.                                        /*  and Macintosh PowerBook */
  1459.                                        /*  5300ce See also #128 in */
  1460.                                        /*  RELEASED COMPUTERS part */
  1461.      gestaltPowerMacIIci?       = 206, /* IIci PPC, MacsBugs 2.5.2 */
  1462.      gestaltPowerMacIIsi?       = 207, /* IIsi PPC, MacsBugs 2.5.2 */
  1463.      gestaltPowerMacIIvi?       = 208, /* IIvi PPC, MacsBugs 2.5.2 */
  1464.      gestaltPowerMacIIvx?       = 209, /* IIvx PPC, MacsBugs 2.5.2 */
  1465.      gestaltPowerMacIIvm?       = 210, /* IIvm PPC, MacsBugs 2.5.2 */
  1466.      gestaltPowerMacIIfx?       = 211, /* IIfx PPC, MacsBugs 2.5.2 */
  1467.      };
  1468.  
  1469.      NOTES:
  1470.      The Power Macintosh computers also set the three low bits of a 32-bit
  1471.      register at a specified address to a machine identification code.
  1472.  
  1473.      ======================================================================
  1474.      Power Macintosh register identification codes
  1475.      ======================================================================
  1476.      Machine                      Address        Register bits  Source
  1477.      ----------------------------------------------------------------------
  1478.      Power Macintosh 5200         ???            ???
  1479.      Power Macintosh 6100         0x5FFF FFFC    000
  1480.      Power Macintosh 7100         0x5FFF FFFC    010
  1481.      Power Macintosh 7200         ???            ???
  1482.      Power Macintosh 7500         ???            ???
  1483.      Power Macintosh 8100         0x5FFF FFFC    011
  1484.      Power Macintosh 8500         ???            ???
  1485.      Power Macintosh 9150         0x5FFF FFFC    100            &AD23
  1486.      Power Macintosh 9500         ???
  1487.      ----------------------------------------------------------------------
  1488.  
  1489.      An upgraded Centris 610 doesn't return 119 (Centris 610 upgrade card?)
  1490.      but 75 (PowerMac 6100). (Carl R. Osterwald)
  1491.      With an upgraded Quadra 700 the upgrade card value is returned. The
  1492.      values for the upgrade cards came from the kMachineNameStrID resource
  1493.      from the Power Mac Upgrade Card enabler distributed with System
  1494.      Update 3.0 on disk 2. The Power Macintosh Card 1.0 control panel
  1495.      checks both the Quadra/Centris machine IDs and the ones for the
  1496.      upgrade cards to determine if it can run. (Rene Ros)
  1497.  
  1498.      With systems prior to System 7.1 these selectors return the same
  1499.      values for the:
  1500.      - Macintosh LC and
  1501.        Macintosh LC II (LC has MC68020,LC II has MC68030)
  1502.      - Macintosh PowerBook 140 and
  1503.        Macintosh PowerBook 145 (use MaximumProcessorSpeed from Power Mgr?,
  1504.                                 16 and 25 MHz resp.)
  1505.  
  1506.      The Developer Notes (available from APDA, on ftp.info.apple.com and on
  1507.      the Developer CD-ROM Series) about some PowerBook models (100, 140,
  1508.      170, 190, PB2300 and PPC Upgrade PB5xx) provide incorrect information
  1509.      regarding the machine type returned by the Gestalt Manager.
  1510.      The Developer Note on the Power Macintosh 9500 doesn't contain any
  1511.      Gestalt info, so it can't be wrong!
  1512.      The Developer Note on the Power Macintosh 7200 says the type value is
  1513.      0x108, this must be 108 (decimal!). (Eric-Paul Rebel)
  1514.  
  1515.      IM More Macintosh Toolbox (p. 1-127) lists this selector as
  1516.      'gestaltMachineModel'.
  1517.  
  1518.      You can use the returned value as an index with GetIndString
  1519.      to get the machine's name. The STR# resource ID is:
  1520.        enum {
  1521.        kMachineNameStrID = -16395};
  1522.      See for more information on the Machine Name STR# resource the
  1523.      'Machine Name' section in the 'Reports' chapter.
  1524.  
  1525.      To check which processor clockspeed the machine is running at,
  1526.      use the 'pclk' selector. For the bus clockspeed, use the 'bclk'
  1527.      selector.
  1528.  
  1529.      See for more information on hardware modified Macintosh computers
  1530.      (i.e. clock chipping) and the values they return the 'Clock Chipped'
  1531.      section in the 'Reports' chapter.
  1532.  
  1533.      See for more information on clones the 'Macintosh Clones' section in
  1534.      the 'Reports' chapter.
  1535.  
  1536.      See for more information on relabled Macintosh models (i.e. the
  1537.      Performa models) the 'Relabled Macintosh Models' section in the
  1538.      'Reports' chapter.
  1539.  
  1540. malr (PowerTalk ext [1.0?], part of PowerTalk)
  1541.      gestaltSMPMailerVersion
  1542.      Returns the SMP Mailer version as INTEGER. Returns zero if not
  1543.      present and available.
  1544.  
  1545.      #define gestaltSMPMailerVersion 'malr' /* SMP Mailer version */
  1546.  
  1547. micn (System [6.0.4]) INF
  1548.      gestaltMachineIcon
  1549.      Returns an icon family resource ID for the current type of
  1550.      Macintosh.
  1551.  
  1552.      #define gestaltMachineIcon 'micn' /* machine ICON/cicn res ID */
  1553.  
  1554.      NOTE:
  1555.      It appears as if this selector always returns the ID of the generic
  1556.      Macintosh icon (like in the Welcome screen), starting with System 7.5.
  1557.      On a PowerBook 5300 with System 7.5.2 installed the icon ID is
  1558.      returned for an icon showing a generic portable computer. (Rene Ros)
  1559.  
  1560. misc (System [6.0.5])
  1561.      gestaltMiscAttr
  1562.      Returns information about miscellaneous pieces of software or
  1563.      hardware.
  1564.  
  1565.      enum {
  1566.      #define gestaltMiscAttr 'misc' /* miscellaneous attributes */
  1567.      gestaltScrollingThrottle = 0,
  1568.      gestaltBootGlobals       = 1,  /* Boot Globals &M02, obsolete? */
  1569.      gestaltSquareMenuBar     = 2};
  1570.  
  1571. mixd (System? [7.1.2?])
  1572.      gestaltMixedModeAttr
  1573.      Returns information about the Mixed Mode Manager.
  1574.  
  1575.      enum {
  1576.      #define gestaltMixedModeAttr 'mixd' /* Mixed Mode Mgr attributes */
  1577.      gestaltPowerPCAware = 0}; /* True if MMMgr Supports PowerPC */
  1578.  
  1579.      NOTE:
  1580.      The name 'gestaltMixedModeVersion' (as used in IM OS Utilites and
  1581.      IM PowerPC System Software) is incorrect. It may be listed in
  1582.      Gestalt header files for a limited time for backwards compatibility.
  1583.      (Rene Ros)
  1584.  
  1585. mmu  (System [6.0.4])
  1586.      gestaltMMUType
  1587.      Returns a value that indicates the type of MMU currently installed,
  1588.      if any.
  1589.  
  1590.      enum {
  1591.      #define gestaltMMUType 'mmu ' /* MMU Type */
  1592.      gestaltNoMMU    = 0,  /* no MMU */
  1593.      gestaltAMU      = 1,  /* AMU */
  1594.      gestalt68851    = 2,  /* 68851 MMU */
  1595.      gestalt68030MMU = 3,  /* built-in 68030 MMU */
  1596.      gestalt68040MMU = 4,  /* built-in 68040/68LC040 &S01 */
  1597.      gestaltEMMU1    = 5}; /* Emulated MMU type 1, PowerPC MMU &AS05 */
  1598.  
  1599.      NOTE:
  1600.      You should also use this selector to test for the existence of
  1601.      _MemoryDispatch if your code runs before system patches are applied
  1602.      on machines of which the ROM implements _MemoryDispatch but the
  1603.      machine doesn't have a MMU. This may happen with a Mac LC, whose
  1604.      ROM is derived from the Macintosh IIci. &AT09
  1605.  
  1606. mtcp (MacTCP cp [1.1])
  1607.      (Open Tpt MacTCP [3.0a2])
  1608.      gestaltMacTCPVersion? &AD01
  1609.      Returns the version of MacTCP, if opened, as index-value. If MacTCP is
  1610.      not opened a value of 0 is returned.
  1611.  
  1612.      #define gestaltMacTCPVersion? 'mtcp'
  1613.  
  1614.      ======================================================================
  1615.      MacTCP responses
  1616.      ======================================================================
  1617.      Version   Response   Remarks
  1618.      ----------------------------------------------------------------------
  1619.       all         0       MacTCP not opened.
  1620.       1.1         1
  1621.       1.1.1       2
  1622.       2.0.x       3
  1623.       3.0         4       Part of Open Transport 1.0
  1624.      ----------------------------------------------------------------------
  1625.  
  1626.      NOTE:
  1627.      No constants are defined by the documentation.
  1628.  
  1629. nlup (System [7.0])
  1630.      gestaltStdNBPAttr
  1631.      Returns information about the call StandardNBP.
  1632.  
  1633.      enum {
  1634.      #define gestaltStdNBPAttr 'nlup' /* Standard NBP attributes */
  1635.      gestaltStdNBPPresent              = 0,
  1636.      gestaltStdNBPSupportsAutoPosition = 1}; /* StandardNBP takes */
  1637.                                              /*  (-1,-1) for auto- */
  1638.                                              /*  positioning */
  1639.  
  1640. nmgr (System [6.0.5])
  1641.      gestaltNotificationMgrAttr
  1642.      Returns information about the Notification Manager.
  1643.  
  1644.      enum {
  1645.      #define gestaltNotificationMgrAttr 'nmgr' /* Notification Mgr attr. */
  1646.      gestaltNotificationPresent = 0};
  1647.  
  1648. nreg (System [7.5.1])
  1649.      gestaltNameRegistryVersion &AD21
  1650.      Returns the version of Name Registry as ???
  1651.  
  1652.      #define gestaltNameRegistryVersion 'nreg';
  1653.  
  1654.      NOTE:
  1655.      Seen installed on a Performa 5200 and 6200 both with System 7.5.1, it
  1656.      returned 0 though! (Rene Ros)
  1657.  
  1658. nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
  1659.      gestaltNuBusSlotCount
  1660.      Returns count of NuBus slots.
  1661.  
  1662.      #define gestaltNuBusSlotCount 'nubs' /* NuBus slot count */
  1663.  
  1664. nvsv (System [Copland?])
  1665.      gestaltNavigationServicesAttr &AD21
  1666.      Returns information about the Navigation Services.
  1667.  
  1668.      enum {
  1669.      #define gestaltNavigationServicesAttr 'nvsv'
  1670.      gestaltNavigationServicesPresent = 0};
  1671.  
  1672.      WARNING:
  1673.      From the Preliminary Copland Headers. May change in the future.
  1674.  
  1675. Apple System Software (O-S)
  1676. ===========================
  1677. This chapter lists selector codes of which the meaning is known and the
  1678. first character of the selector code is in the O-S range.
  1679.  
  1680. ocet (PowerTalk Manager ext [1.0?], part of PowerTalk)
  1681.      gestaltOCEToolboxVersion
  1682.      Returns the versions of the S&F Server and the OCE Toolbox as BCD.
  1683.      Returns zero if not present and available.
  1684.  
  1685.      enum {
  1686.      #define gestaltOCEToolboxVersion 'ocet' /* OCE Toolbox version */
  1687.      gestaltOCETB    = 0x0102,  /* current OCE Toolbox version 1.0.2 */
  1688.      gestaltSFServer = 0x0100}; /* current S&F Server version 1.0 */
  1689.  
  1690.      NOTE:
  1691.      The high order word will represent the S&F Server version number, and
  1692.      the low order the OCE Toolbox version number both as BCD.
  1693.      These will be zero until the component is up and running.
  1694.  
  1695. oceu (PowerTalk Manager ext [1.0?], part of PowerTalk)
  1696.      gestaltOCEToolboxAttr
  1697.      Returns information about the Open Colloboration Environment Toolbox.
  1698.  
  1699.      enum {
  1700.      #define gestaltOCEToolboxAttr 'oceu' /* OCE Toolbox attributes */
  1701.      gestaltOCETBPresent            = 0x1,   /* OCE toolbox is present, */
  1702.                                              /*  not running */
  1703.      gestaltOCETBAvailable          = 0x2,   /* OCE toolbox is running */
  1704.                                              /*  and available */
  1705.      gestaltOCESFServerAvailable    = 0x4,   /* S&F Server is running */
  1706.                                              /*  and available */
  1707.      gestaltOCTBNativeGlueAvailable = 0x10}; /* PowerPC glue available */
  1708.                                              /*  &AS13 */
  1709.  
  1710.      NOTE:
  1711.      Any (future) remaining OCE attributes may not be established
  1712.      correctly until the attribute gestaltOCETBAvailable is set.
  1713.  
  1714. opfw (System [7.5.2])
  1715.      gestaltOpenFirmwareInfo
  1716.      Returns ???
  1717.  
  1718.      enum {
  1719.      #define gestaltOpenFirmwareInfo 'opfw'
  1720.      gestalt??? = 1};
  1721.  
  1722.      NOTE:
  1723.      This selector may be installed but returns gestaltUnknownErr instead
  1724.      of zero. (Rene Ros)
  1725.  
  1726. os   (System [6.0.4, 7.0 and later])
  1727.      (Process Manager INIT ext [???], part of ???)
  1728.      gestaltOSAttr
  1729.      Returns general information about the Operating System.
  1730.  
  1731.      enum {
  1732.      #define gestaltOSAttr 'os  ' /* O/S attributes */
  1733.      gestaltSysZoneGrowable      =  0,
  1734.      gestaltLaunchCanReturn      =  1,
  1735.      gestaltLaunchFullFileSpec   =  2,
  1736.      gestaltLaunchControl        =  3,
  1737.      gestaltTempMemSupport       =  4,
  1738.      gestaltRealTempMemory       =  5,
  1739.      gestaltTempMemTracked       =  6,
  1740.      gestaltIPCSupport           =  7,
  1741.      gestaltSysDebuggerSupport   =  8,
  1742.      gestaltSkiaGlobalsSwitched  =  9,  /* &AS05 */
  1743.      gestaltBgndMouseDownSupport?= 10,  /* unnamed Process Mgr routine */
  1744.                                         /*  available to indicate if a */
  1745.                                         /*  layer switch is wanted by the */
  1746.                                         /*  application when one of its */
  1747.                                         /*  windows is clicked while in */
  1748.                                         /*  the background. &AS04 */
  1749.      gestalt???                  = 11,  /* on PowerPC, Performa 630 and */
  1750.                                         /*  PB180? */
  1751.      gestalt???                  = 13,  /* unknown, System 7.5 */
  1752.      gestalt???                  = 14,  /* unknown, System 7.5 */
  1753.      gestalt???                  = 15}; /* unknown, System 7.5.1 */
  1754.  
  1755.      NOTES:
  1756.      See the Process Manager chapter in IM Processes for more information
  1757.      about the launch control features. And the Memory Manager chapter in
  1758.      IM Memory about the memory features.
  1759.  
  1760.      Under A/UX 2.x this selector incorrectly returns information about the
  1761.      Process Manager, which isn't available. You should test for A/UX 3.0 or
  1762.      later by using the gestaltAUXVersion ('a/ux') selector. &AT10
  1763.  
  1764.      More information on the unnamed routine which presence is indicated
  1765.      by the gestaltBgndMouseDownSupport? bit can be found in the orginal
  1766.      email from Marco Piovanelli to the editor of the GSL. You can get a
  1767.      copy by emailing this command to the mail archive server:
  1768.           'archive get src/bgndmouse.txt'
  1769.  
  1770.      The header file which lists the gestaltSkiaGlobalsSwitched bit says
  1771.      this:
  1772.      /*gestaltSkiaGlobalsSwitched is #9. I don't know why it is not here*/
  1773.  
  1774.      "Skia" was the code name for QuickDraw GX (MacsBug uses it for trap
  1775.      0xA832, which is the main QuickDraw GX trap).
  1776.      (Lawrence D'Oliveiro, Anonymous)
  1777.  
  1778. ostt (System [6.0.8?])
  1779.      gestaltOSTable
  1780.      Returns the base address of the Operating System trap table.
  1781.  
  1782.      #define gestaltOSTable 'ostt' /* O/S trap table base */
  1783.  
  1784. osyv (sysvINIT ext [???] by T. Tanaka, Apple Computer Japan Inc.)
  1785.      gestaltOldSystemVersion?
  1786.      Returns the version of the system file as BCD which was returned
  1787.      before sysvINIT replaced the gestalt definition with a corrected one.
  1788.  
  1789.      #define gestaltOldSystemVersion? 'osyv'
  1790.  
  1791.      NOTE:
  1792.      Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
  1793.      available on Developer CD Series) replaces the standard 'sysv' gestalt
  1794.      function with a corrected one to return 0x0607 and installs the
  1795.      'osyv' selector which uses the replaced gestalt definition. &M03
  1796.  
  1797. pccd (System? [???])
  1798.      gestaltCardServicesAttr &AD24
  1799.      Returns information about the PC Card Manager (for managing i.e.
  1800.      PCMCIA cards).
  1801.  
  1802.      enum {
  1803.      #define gestaltCardServicesAttr 'pccd', /* Card Services attributes */
  1804.      gestaltCardServicesPresent = 0};        /* if set, Card Services is */
  1805.                                              /* present */
  1806.  
  1807.      NOTE:
  1808.      This selector is not implemented with any current system software
  1809.      (7.5.1) on the PowerBook 500 Series computers.
  1810.  
  1811. pcxg (PC Exchange cp? [???]) &AS04/AS05
  1812.      gestaltPCXAttr
  1813.      Returns information about PC Exchange.
  1814.  
  1815.      enum {
  1816.      #define gestaltPCXAttr 'pcxg'   /* PC Exchange attributes */
  1817.      gestaltPCXHas8and16BitFAT = 0,  /* PC Exchange supports both 8 and */
  1818.                                      /*  16 bit FATs */
  1819.      gestaltPCXHasProDOS       = 1}; /* PC Exchange supports ProDOS */
  1820.  
  1821. pgsz (System [6.0.4])
  1822.      gestaltLogicalPageSize
  1823.      Returns the logical page size in bytes.
  1824.  
  1825.      #define gestaltLogicalPageSize 'pgsz' /* logical page size */
  1826.  
  1827.      NOTE:
  1828.      The value is unknown on 68000 machines, Gestalt will return an error.
  1829.  
  1830. pop! (System [7.0])
  1831.      gestaltPopupAttr
  1832.      Returns information about the pop-up control definition.
  1833.  
  1834.      enum {
  1835.      #define gestaltPopupAttr 'pop!' /* pop-up CDEF attributes */
  1836.      gestaltPopupPresent = 0}; /* pop-up CDEF available */
  1837.  
  1838. powr (System [6.0.4])
  1839.      gestaltPowerMgrAttr
  1840.      Returns information about the Power Manager, if present.
  1841.  
  1842.      enum {
  1843.      #define gestaltPowerMgrAttr 'powr' /* Power Mgr attributes */
  1844.      gestaltPMgrExists         = 0,     /* Power Mgr is present */
  1845.      gestaltPMgrCPUIdle        = 1,     /* CPU can idle */
  1846.      gestaltPMgrSCC            = 2,     /* can stop SCC clock */
  1847.      gestaltPMgrSound          = 3,     /* can shut off sound circuits */
  1848.      gestaltPMgrDispatchExists = 4};    /* dispatch routines are present */
  1849.  
  1850.      NOTE:
  1851.      Bit 4 seen set on Power Mac codenamed Catalyst with System 7.5.2.
  1852.      This is because some desktop machines support the Power Manager for
  1853.      things like Energy Star compliance. (Two anonymous contributors)
  1854.  
  1855. ppc  (System [7.0])
  1856.      gestaltPPCToolboxAttr
  1857.      Returns information about the capabilities of the PPC Toolbox.
  1858.  
  1859.      enum {
  1860.      #define gestaltPPCToolboxAttr 'ppc '  /* PPC Toolbox attributes */
  1861.      gestaltPPCToolboxPresent          = 0x0000,  /* Requires PPCInit to */
  1862.                                                   /*  be called */
  1863.      gestaltPPCSupportsIncoming        = 0x0001,  /* Deny incoming net */
  1864.                                                   /*  requests */
  1865.      gestaltPPCSupportsOutGoing        = 0x0002,  /* Deny outgoing net */
  1866.                                                   /*  requests */
  1867.      gestaltPPCSupportsRealTime        = 0x1000,  /* Supports real-time */
  1868.                                                   /*  delivery */
  1869.      gestaltPPCSupportsStoreAndForward = 0x2000,  /* Supports store and */
  1870.                                                   /*  forward delivery */
  1871.      gestaltPPCSupportsDontCare        = 0x4000}; /* Supports specifi- */
  1872.                                                   /*  cation of Don't */
  1873.                                                   /*  care */
  1874.  
  1875.      NOTE:
  1876.      The first thing that is confusing is that, unlike other selectors
  1877.      returning attributes, the responses are not bit values, but bit masks.
  1878.      This means you simply AND the value with the response to test the bit.
  1879.      The second thing that is confusing is how to interpret
  1880.           gestaltPPCToolboxPresent = 0x0000.
  1881.      What this means is that if the PPC toolbox is present, but has not
  1882.      been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
  1883.      returns 0x0000. In reality, PPCInit gets called by the Process
  1884.      Manager before any applications get launched, so no applications will
  1885.      actually see this response. (Dave Radcliffe)
  1886.  
  1887. proc (System [6.0.4])
  1888.      gestaltProcessorType
  1889.      Returns a value that indicates the type of processor that is
  1890.      currently running (or emulated on Power Macs or under MAE).
  1891.  
  1892.      enum {
  1893.      #define gestaltProcessorType 'proc' /* processor type */
  1894.      gestalt68000 = 1,  /* MC68000 */
  1895.      gestalt68010 = 2,  /* MC68010 */
  1896.      gestalt68020 = 3,  /* MC68020 */
  1897.      gestalt68030 = 4,  /* MC68030 */
  1898.      gestalt68040 = 5}; /* MC68040 &S01 */
  1899.  
  1900.      NOTES:
  1901.      The 68LC040 responds as type gestalt68040 but doesn't have a FPU. The
  1902.      user can swap out the 68LC040 and put in a real 68040 with FPU, so
  1903.      just checking the machineType or the processorType isn't enough.
  1904.      (Dave Radcliffe)
  1905.  
  1906.      Has there been a 68EC030 processor??? I assume it returns
  1907.      gestalt68030 but doesn't have an MMU. (Rene Ros)
  1908.  
  1909.      On a Power Macintosh the Gestalt function returns, although a 68LC040
  1910.      is emulated, the value gestalt68020. This return value is intended to
  1911.      highlight the two ways in which the 68LC040 Emulator more closely
  1912.      resembles a 68020 processor than a 68040 processor. &AD11
  1913.  
  1914. prpv (PowerTalk ext [1.0?], part of PowerTalk)
  1915.      gestaltSDPPromptVersion
  1916.      Returns the SDP Prompt version as INTEGER. Returns zero if not
  1917.      present and available.
  1918.  
  1919.      #define gestaltSDPPromptVersion 'prpv' /* SDP Prompt version */
  1920.  
  1921. prty (System [6.0.4])
  1922.      gestaltParityAttr
  1923.      Returns information about the parity-checking abilities of the
  1924.      machine.
  1925.  
  1926.      enum {
  1927.      #define gestaltParityAttr 'prty' /* parity attributes */
  1928.      gestaltHasParityCapability = 0,
  1929.      gestaltParityEnabled       = 1};
  1930.  
  1931. pwky (System Update enbl [7.5 upd 2.0])
  1932.      gestaltPowerKeyAddr?
  1933.      Returns a pointer to a routine of type
  1934.  
  1935.      typedef pascal OSErr (*PwrKeyProc)(short item, short action);
  1936.  
  1937.      to enable/disable the PowerKey and/or Shutdown Alert.
  1938.  
  1939.      #define gestaltPowerKeyAddr? 'pwky'
  1940.  
  1941.      NOTE:
  1942.      See 'Disabling PowerKey' in the 'Reports' chapter for more
  1943.      information.
  1944.  
  1945. qd   (System [6.0.4])
  1946.      gestaltQuickdrawVersion
  1947.      Returns the version of QuickDraw currently present as 2-byte value.
  1948.  
  1949.      enum {
  1950.      #define gestaltQuickdrawVersion 'qd  ' /* QuickDraw version */
  1951.      gestaltOriginalQD  = 0x000,
  1952.      gestaltOriginalQD1 = 0x001,
  1953.      gestalt8BitQD      = 0x100,
  1954.      gestalt32BitQD     = 0x200,
  1955.      gestalt32BitQD11   = 0x210,
  1956.      gestalt32BitQD12   = 0x220,
  1957.      gestalt32BitQD13   = 0x230,
  1958.      gestalt32BitQD135? = 0x235,  /* with System 7.1.2, ROM = 3072K? */
  1959.      gestalt32BitQD139? = 0x239,  /* with System 7.5.1 on Power Macs */
  1960.                                   /*  &AT12 */
  1961.      gestalt32BitQD141? = 0x241}; /* with System 7.5.2 */
  1962.  
  1963.      ======================================================================
  1964.      Possible Combinations of ROM Versions and System Software Versions
  1965.      ======================================================================
  1966.      ROM Class             System Version         Gestalt Value
  1967.      ----------------------------------------------------------------------
  1968.      Black-and-white class <  7.0                 gestaltOriginalQD
  1969.      (ROM < 256K)          >= 7.0                 gestaltOriginalQD and
  1970.                                              gestaltSystemVersion >= 0x0700
  1971.  
  1972.      Color QD class        <  7.0, no INITs       gestalt8BitQD
  1973.      (ROM = 256K)          6.0.3/6.0.4 and        gestalt32BitQD
  1974.                            32-Bit QD INIT 1.0
  1975.                            6.0.5-6.0.8 and        gestalt32BitQD12
  1976.                            32-Bit QD INIT 1.2
  1977.                            >= 7.0                 gestalt32BitQD13
  1978.  
  1979.      ci class              6.0.4                  gestalt32BitQD + 1
  1980.      (256K < ROM >= 3072K) 6.0.5-6.0.8            gestalt32BitQD12
  1981.                            >= 7.0                 gestalt32BitQD13
  1982.      SuperROM?             7.1.2-7.5?             gestalt32BitQD135?
  1983.      (ROM = 3072K)         7.5.1?                 gestalt32BitQD139?
  1984.                            7.5.2?                 gestalt32BitQD141?
  1985.      ----------------------------------------------------------------------
  1986.      (Original source: D e v e l o p 14, June 1993, p. 56;
  1987.       Info on System 7.1.2 and later based on observations and technical
  1988.       notes.)
  1989.  
  1990.      NOTE:
  1991.      gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
  1992.      0x0201 as response value and doesn't has a constant defined.
  1993.      Another QuickDraw version is System 7 with a black-and-white class
  1994.      machine.
  1995.  
  1996.      Color QuickDraw is only available on 68020 and greater CPUs, and
  1997.      this selector always returns gestaltOriginalQD on 68000 machines,
  1998.      even when running System 7. &AT11
  1999.  
  2000. qdrw (System [7.0])
  2001.      gestaltQuickDrawFeatures &S01
  2002.      Returns information about QuickDraw.
  2003.  
  2004.      enum {
  2005.      #define gestaltQuickDrawFeatures 'qdrw'     /* QuickDraw attributes */
  2006.      #define gestaltQuickDrawFeaturesAttr 'qdrw' /* used in some headers */
  2007.      gestaltHasColor          = 0,
  2008.      gestaltHasDeepGWorlds    = 1,
  2009.      gestaltHasDirectPixMaps  = 2,
  2010.      gestaltHasGrayishTextOr  = 3,
  2011.      gestaltSupportsMirroring = 4}; /* &AD12 */
  2012.  
  2013.      NOTES:
  2014.      There is a bug in the 'qdrw' selector that causes it to report that
  2015.      Color QuickDraw is always present, even on machines that don't support
  2016.      it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
  2017.      Use SysEnvirons instead or test for the QD version ('qd  ') being
  2018.      8-bit QD or later.
  2019.  
  2020. qtim (QuickTime ext [1.0])
  2021.      gestaltQuickTime
  2022.      gestaltQuickTimeVersion
  2023.      Returns QuickTime version as NumVersion.
  2024.  
  2025.      #define gestaltQuickTime 'qtim' /* Movie Toolbox Availability */
  2026.      #define gestaltQuickTimeVersion 'qtim' /* Movie Toolbox version */
  2027.  
  2028.      NOTES:
  2029.      The returned version is obtained from 'vers' resource ID# 1.
  2030.  
  2031.      Initially the name 'gestaltQuickTime' was used to test for the
  2032.      availability of QuickTime. The fact that is always returned a
  2033.      version number was not documented until later. Then the name
  2034.      'gestaltQuickTimeVersion' was defined. (Rene Ros)
  2035.  
  2036.      See 'Reports' chapter (QuickTime section) for more information.
  2037.  
  2038. qtrs (QuickTime PowerPlug ext [1.0?])
  2039.      gestaltQuickTimeFeatures &AS06
  2040.  
  2041.      enum {
  2042.      #define gestaltQuickTimeFeatures 'qtrs' /* QT Features attributes */
  2043.      gestaltPPCQuickTimeLibPresent = 0}; /* PowerPC QT glue library is */
  2044.                                          /*  present */
  2045.  
  2046.      NOTE:
  2047.      The gestaltPPCQuickTimeLibPresent bit indicates that the native
  2048.      QuickTime interface library is available and can be called by native
  2049.      PowerPC applications. (Dave Radcliffe)
  2050.      See for more info Technical Note
  2051.      'QT 01 - Inside Macintosh: QuickTime Addendum'.
  2052.  
  2053. ram  (System [6.0.4])
  2054.      gestaltPhysicalRAMSize
  2055.      Returns the number of bytes of the physical RAM currently installed.
  2056.  
  2057.      #define gestaltPhysicalRAMSize 'ram ' /* physical RAM */
  2058.  
  2059. rbv  (System [6.0.4, discontinued?]) &AS04
  2060.      gestaltRBVAddr
  2061.      Returns the address of the RBV.
  2062.  
  2063.      #define gestaltRBVAddr 'rbv ' /* RBV address */
  2064.  
  2065. reno (Apple Guide ext [1.2?], part of System 7.5 and later)
  2066.      ???
  2067.      Indicates presence "of the Reno system extension." (Reno is the
  2068.      mechanism behind Apple Guide for managing the help data-bases?)
  2069.  
  2070. rom  (System [6.0.4]) INF
  2071.      gestaltROMSize
  2072.      Returns the size of the installed ROM in bytes.
  2073.  
  2074.      #define gestaltROMSize 'rom ' /* ROM size */
  2075.  
  2076.      NOTE:
  2077.      On Power Macintosh computers this selector returns the ROM size minus
  2078.      the 68K emulator portion, which uses about 1 MB. &AD18
  2079.  
  2080. romv (System [6.0.4]) INF
  2081.      gestaltROMVersion
  2082.      Returns the version number of the installed ROM.
  2083.  
  2084.      #define gestaltROMVersion 'romv' /* ROM version */
  2085.  
  2086. rsrc (System [should work since 7.0?])
  2087.      gestaltResourceMgrAttr
  2088.      Returns information about the Resource Manager.
  2089.  
  2090.      enum {
  2091.      #define gestaltResourceMgrAttr 'rsrc' /* Resource Mgr attributes */
  2092.      gestaltPartialRsrcs       = 0,
  2093.      gestaltResourceOverrides? = 1}; /* resource map overrides? */
  2094.  
  2095.      NOTE:
  2096.      Under System 7, bit 0 that tells if you have partial resource support
  2097.      doesn't work right. The selector is undefined under System 7.0 and
  2098.      7.0.1 even though the partial resource calls are available. This has
  2099.      been acknowledged by Apple. (Michael Hecht, Quinn)
  2100.  
  2101. rtmr (System? [7.1.1?])
  2102.      gestaltRealtimeMgrAttr
  2103.      Returns information about the Realtime Manager.
  2104.  
  2105.      enum {
  2106.      #define gestaltRealtimeMgrAttr 'rtmr' /* Realtime Mgr attributes */
  2107.      gestaltRealtimeMgrPresent = 0}; /* Realtime Mgr is present */
  2108.  
  2109.      NOTE:
  2110.      If the RealTime Mgr is present this means the ARTA routines are
  2111.      available to determine if and how many DSPs are installed.
  2112.      (Zalman Stern)
  2113.  
  2114. sccr (System [6.0.4, discontinued]) &AS04
  2115.      gestaltSCCReadAddr
  2116.      Returns the address of SCC read ports.
  2117.  
  2118.      #define gestaltSCCReadAddr 'sccr' /* SCC read ports address */
  2119.  
  2120. sccw (System [6.0.4, discontinued]) &AS04
  2121.      gestaltSCCWriteAddr
  2122.      Returns the address of SCC write ports.
  2123.  
  2124.      #define gestaltSCCWriteAddr 'sccw' /* SCC write ports address */
  2125.  
  2126. scr# (System [6.0.4])
  2127.      gestaltScriptCount
  2128.      Returns the number of script systems currently active.
  2129.  
  2130.      #define gestaltScriptCount 'scr#' /* number of active scripts */
  2131.  
  2132. scra (Macintosh Easy Open cp [1.0]) &AD03
  2133.      gestaltScrapMgrAttr
  2134.      Returns information about the Scrap Manager.
  2135.  
  2136.      enum {
  2137.      #define gestaltScrapMgrAttr 'scra'; /* Scrap Mgr attributes */
  2138.      gestaltScrapMgrTranslationAware = 0};
  2139.  
  2140. scri (System [6.0.4])
  2141.      gestaltScriptMgrVersion
  2142.      Returns the version number of the Script Manager as BCD.
  2143.  
  2144.      #define gestaltScriptMgrVersion 'scri' /* Script Mgr version */
  2145.  
  2146.      ======================================================================
  2147.      Version numbers for the Script Manager
  2148.      ======================================================================
  2149.      System Version       Script Mgr           Script Mgr          Version
  2150.                           (older ROMs)+        (newer ROMs)        format
  2151.      ----------------------------------------------------------------------
  2152.      6.0.3 and earlier    <= 0x20F             N.A.                binary
  2153.      6.0.4 Roman          0x211                0x215                  "
  2154.      6.0.4 non-Roman      0x212                0x216                  "
  2155.      6.0.5                0x213                0x217 (=2.23)          "
  2156.  
  2157.      6.0.7                0x230                0x231                BCD
  2158.      J-6.0.7.1            0x230                0x231                 "
  2159.      6.0.8                0x230                0x231                 "
  2160.      6.1 non-Roman        0x240                0x241                 "
  2161.      7.0                  0x700                0x700                 "
  2162.      7.0.1 Roman          0x701                0x701                 "
  2163.      7.0.1 non-Roman      0x701                0x701                 "
  2164.      7.1                  0x710                0x710                 "
  2165.      7.5                  0x720                0x720                 "
  2166.      7.5.1                0x750                0x750                 "
  2167.  
  2168.      + Plus,SE,II,IIx,IIcx,SE/30,Classic
  2169.      ----------------------------------------------------------------------
  2170.      (Original source: Inside Macintosh Text, p. 6-9;
  2171.       Info on System 7.5 and later based on observations.)
  2172.  
  2173. scsi (System [7.1.2?])
  2174.      (SCSI Manager ext [4.3])
  2175.      gestaltSCSI &AT07
  2176.      Returns information about the SCSI Manager.
  2177.  
  2178.      enum {
  2179.      #define gestaltSCSI 'scsi' /* SCSI Manager attributes */
  2180.      gestaltAsyncSCSI      = 0,  /* Supports asynchronous SCSI */
  2181.      gestaltAsyncSCSIINROM = 1,  /* Async SCSI is in ROM (available for */
  2182.                                  /*  booting) */
  2183.      gestaltSCSISlotBoot   = 2}; /* ROM supports Slot-style PRAM for */
  2184.                                  /*  SCSI boots */
  2185. sdev (Control Strip cp [1.0])
  2186.      gestaltControlStripAttr
  2187.      Returns information about the Control Strip software.
  2188.  
  2189.      enum {
  2190.      #define gestaltControlStripAttr 'sdev'
  2191.      gestaltControlStripExists       = 0, /* TRUE = control strip is */
  2192.                                           /*   installed */
  2193.      gestaltControlStripVersionFixed = 1, /* version of Control Strip */
  2194.                                           /*  installs 'csvr' selector */
  2195.                                           /*  instead of 'sdvr' &AS11 */
  2196.      gestaltControlStripUserFont     = 2, /* supports user-selectable */
  2197.                                           /*  font/size &AS20 */
  2198.      gestaltControlStripUserHotKey   = 3};/* support user-selectable hot */
  2199.                                           /*  key to show/hide the */
  2200.                                           /*  window &AS20 */
  2201.  
  2202.      NOTE:
  2203.      A file 'IsControlStrip.c' included with the Apple Guide Authoring Kit
  2204.      defines this selector as:
  2205.        #define gestaltStatusBarAttr 'sdev'
  2206.        #define gestaltStatusBarExists 0
  2207.      (Rene Ros)
  2208.  
  2209. sdvr (PowerTalk ext [1.0?], part of PowerTalk)
  2210.      gestaltSDPStandardDirectoryVersion
  2211.      Returns the SDP Standard Directory version as INTEGER. Returns zero if
  2212.      not present and available.
  2213.  
  2214.      #define gestaltSDPStandardDirectoryVersion 'sdvr'
  2215.                                        /* SDP Standard Directory version */
  2216.  
  2217.      WARNING:
  2218.      The same selector code is used by the Control Strip 1.0 control panel.
  2219.      See the gestaltControlStripVersion ('csvr') selector entry above.
  2220.  
  2221. ser  (System [6.0.8?])
  2222.      gestaltSerialAttr
  2223.      Returns information about the serial hardware of the machine.
  2224.  
  2225.      enum {
  2226.      #define gestaltSerialAttr 'ser ' /* serial hardware attributes */
  2227.      gestaltGPIaToDCDa  = 0,
  2228.      gestaltGPIaToRTxCa = 1,
  2229.      gestaltGPIaToDCDb  = 2};
  2230.  
  2231. slmp (Shared Library Manager? ext [2.0])
  2232.      gestaltASLMPPC &AS17
  2233.  
  2234.      NOTE:
  2235.      See the gestaltASLM68K ('aslm') entry for more information.
  2236.  
  2237. slot (System [6.0.4, 6.0.5, discontinued])
  2238.      gestaltSlotAttr
  2239.      Returns information about the Slot Manager.
  2240.  
  2241.      enum {
  2242.      #define gestaltSlotAttr 'slot' /* Slot Mgr attributes */
  2243.      gestaltSlotMgrExists       = 0,
  2244.      gestaltNuBusPresent        = 1,
  2245.      gestaltSESlotPresent       = 2,
  2246.      gestaltSE30SlotPresent     = 3,
  2247.      gestaltPortableSlotPresent = 4};
  2248.  
  2249. slt1 (System [6.0.4, 6.0.5, discontinued])
  2250.      gestaltFirstSlotNumber
  2251.      Returns first slot number.
  2252.  
  2253.      #define gestaltFirstSlotNumber 'slt1' /* First Slot number */
  2254.  
  2255. sltc (System [6.0.8?])
  2256.      gestaltNuBusConnectors
  2257.      Returns information about the NuBus slot connector locations. The
  2258.      value returned is a bitmap. If bits 9 to E are set, there are six
  2259.      slots present with locations 9 to E.
  2260.  
  2261.      #define gestaltNuBusConnectors 'sltc' /* NuBus connector bitmap */
  2262.  
  2263.      NOTE:
  2264.      This selector does not return information about the PDS slot (with
  2265.      or without NuBus adapter). Also, it is unknown if this selector also
  2266.      includes slot 0x8 which was added with the Power Macintosh 8100/110.
  2267.      (John Mancino)
  2268.  
  2269. snd  (System [6.0.4])
  2270.      gestaltSoundAttr
  2271.      Returns information about the sound capabilities of the machine.
  2272.  
  2273.      enum {
  2274.      #define gestaltSoundAttr 'snd '   /* sound attributes */
  2275.      gestaltStereoCapability    =  0,  /* can play stereo sounds */
  2276.      gestaltStereoMixing        =  1,  /* mixes channels into single */
  2277.                                        /*  signal */
  2278.      gestaltSoundReserved       =  2,  /* Sound Manager 3.1? */
  2279.      gestaltSoundIOMgrPresent   =  3,  /* new sound input routines avail.*/
  2280.      gestaltBuiltInSoundInput   =  4,  /* built-in sound input device  */
  2281.                                        /*  available */
  2282.      gestaltHasSoundInputDevice =  5,  /* some sound input device avail. */
  2283.      gestaltPlayAndRecord       =  6,  /* built-in hardware can play and */
  2284.                                        /*  record simultaneously */
  2285.                                        /*  &AS03/AS04 */
  2286.      gestalt16BitSoundIO        =  7,  /* sound hardware can play and */
  2287.                                        /*  record 16-bit samples &AS04 */
  2288.      gestaltStereoInput         =  8,  /* sound hardware can record */
  2289.                                        /*  stereo &AS04 */
  2290.      gestaltLineLevelInput      =  9,  /* sound input port requires line */
  2291.                                        /*  level &AS04 */
  2292.      gestaltSndPlayDoubleBuffer = 10,  /* play from disk available &AS04 */
  2293.      gestaltMultiChannels       = 11,  /* multiple channel support */
  2294.                                        /*  &AS03/AS04 */
  2295.      gestalt16BitAudioSupport   = 12}; /* 16 bit audio data supported */
  2296.                                        /*  &AS04 */
  2297.  
  2298.      NOTES:
  2299.      Bit 7 through 12 are not defined for versions of the Sound Manager
  2300.      prior to version 3.0.
  2301.  
  2302.      With the Enhanced Sound Manager (version 2) you have both multi-
  2303.      channel and play-from-disk capability if the Apple Sound Chip is
  2304.      available. But the gestaltSndPlayDoubleBuffer and gestaltMultiChannels
  2305.      bits are not set. Test for the gestaltHasASC bit of the
  2306.      gestaltHardwareAttr selector. &AD06/AD20
  2307.      A later Technical Note retracts this info, and says it is not safe to
  2308.      assume both functions if the gestaltHasASC bit is set with the
  2309.      gestaltHardwareAttr selector! &AT01
  2310.  
  2311. snhw (System [7.5])
  2312.      (Sound Manager ext [3.0])
  2313.      gestaltSoundHardware
  2314.      Returns type of hardware used for sound?
  2315.  
  2316.      enum {
  2317.      #define gestaltSoundHardware 'snhw' /* Sound Hardware */
  2318.      gestaltASC          = 'asc ',  /* ASC */
  2319.      gestaltAwacs?       = 'awac',  /* returned on PowerMac */
  2320.      gestaltGCAwacs?     = 'awgc',  /* returned on PM 7200, PM 8500 */
  2321.                                     /* and PM 9500 with System 7.5.2 */ 
  2322.      gestaltClassicSound = 'clas',  /* Classic Mac? */
  2323.      gestaltDSP          = 'dsp ',  /* DSP */
  2324.      gestaltSinger?      = 'sing',  /* returned on PB 540c */
  2325.      gestaltSinger2?     = 'sng2',  /* returned on PB 190cs & PB 5300 */
  2326.      gestaltWhitney?     = 'whit'}; /* returned on Performa 5300 */
  2327.  
  2328.      NOTE:
  2329.      The SoundComponents.h header file from ETO #18 lists the following
  2330.      values, possibly also return values for this selector? (Anonymous)
  2331.  
  2332.      kClassicSubType  'clas'      /* classic hardware, i.e. Mac Plus */
  2333.      kASCSubType      'asc '      /* Apple Sound Chip device */
  2334.      kDSPSubType      'dsp '      /* DSP device */
  2335.      kAwacsSubType    'awac'      /* Another of Will's Audio Chips device*/
  2336.      kGCAwacsSubType  'awgc'      /* Awacs audio with Grand Central DMA */
  2337.      kSingerSubType   'sing'      /* Singer (via Whitney) based sound */
  2338.      kSinger2SubType  'sng2'      /* Singer 2 (via Whitney) for Acme */
  2339.  
  2340. spsl (PowerTalk ext [1.0?], part of PowerTalk)
  2341.      gestaltSMPSPSendLetterVersion
  2342.      Returns the SMP SendLetter version as INTEGER. Returns zero if not
  2343.      present and available.
  2344.  
  2345.      #define gestaltSMPSPSendLetterVersion 'spsl' /* SMP Sendletter */
  2346.                                                   /*  version */
  2347.  
  2348. stdf (System [7.0])
  2349.      (Macintosh Easy Open cp [1.0?])
  2350.      gestaltStandardFileAttr
  2351.      Returns information about the Standard File Package.
  2352.  
  2353.      enum {
  2354.      #define gestaltStandardFileAttr 'stdf' /* Standard File attr. */
  2355.      gestaltStandardFile58               = 0, /* StandardPutFile, */
  2356.                                               /*  StandardGetFile, */
  2357.                                               /*  CustomPutFile and */
  2358.                                               /*  CustomGetFile are */
  2359.                                               /*  available. */
  2360.      gestaltStandardFileTranslationAware = 1, /* &AD03/AS04 */
  2361.      gestaltStandardFileHasColorIcons    = 2, /* &AD03/AS04/AS05 */
  2362.      gestaltStandardFileUseGenericIcons  = 3, /* force the LDEF to use  */
  2363.                                               /*  only the system */
  2364.                                               /*  generic icons &AT06 */
  2365.      gestaltStandardFileHasDynamicVolumeAllocation = 4};
  2366.                                               /* supports more than 20 */
  2367.                                               /*  volumes &AT06 */
  2368.  
  2369. sysa (System [7.1.2?]) &AS04
  2370.      gestaltSysArchitecture
  2371.      Returns one of the following values, indicating the type of
  2372.      architecture on which the application is currently running.
  2373.  
  2374.      enum {
  2375.      #define gestaltSysArchitecture 'sysa' /* System Architecture type */
  2376.      gestalt68k     = 1,
  2377.      gestaltPowerPC = 2};
  2378.  
  2379. sysv (System [6.0.4]) INF
  2380.      gestaltSystemVersion
  2381.      Returns the version number of the currently active System file as BCD.
  2382.  
  2383.      #define gestaltSystemVersion 'sysv'  /* System file version */
  2384.  
  2385.      NOTES:
  2386.      In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
  2387.      versions return 0x0606. See the 'osyv' selector.
  2388.      System J-6.0.7.1 returns 0x0609
  2389.  
  2390.      System 6.0.8 returns 0x0607 because only the printer drivers were
  2391.      added. You can't determine if it is actually 6.0.8 in another way.
  2392.  
  2393.      There are some system versions (like International System 6.0.8.1 or
  2394.      7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
  2395.      7.0.1.
  2396.  
  2397.      System 7.1.2 (for Power Macintosh) apparently returns an incorrect
  2398.      version number (0x0710) when in 68K mode with a PPC Upgrade card.
  2399.      (Rick Gansler)
  2400.  
  2401.      System 7.5 Update 1.0 makes this selector return 0x751. (Anonymous)
  2402.      System 7.5 Update 2.0 does NOT make this selector return 0x752.
  2403.      (Anonymous too)
  2404.  
  2405.      To determine the system update version, use the 'sysu' selector.
  2406.  
  2407. Apple System Software (T-Z)
  2408. ===========================
  2409. This chapter lists selector codes of which the meaning is known and the
  2410. first character of the selector code is in the T-Z range.
  2411.  
  2412. tabl (System [6.0.4])
  2413.      gestaltSelectorTable?
  2414.      Returns a handle to the Gestalt selector table itself.
  2415.  
  2416.      #define gestaltSelectorTable? 'tabl' /* Gestalt Table address */
  2417.  
  2418.      WARNING:
  2419.      Although this information isn't officially confirmed, it is probably
  2420.      correct. But it is likely to go away in future systems.
  2421.  
  2422.      NOTE:
  2423.      The Gestalt selector table is kept in a resizable block in the system
  2424.      heap. The last item in the table is a dummy entry (INVALID), marked by
  2425.      a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
  2426.      snippet Pascal code to list all selectors)
  2427.      With System 7.5 each item in the table now contains three parts:
  2428.      the selector, an information field and a field with either a pointer
  2429.      or a value. If the information field (or only bit 0) is 1, a value is
  2430.      stored, otherwise a pointer to the gestalt function. (Eric-Paul Rebel)
  2431.      For backward compatibility this selector probably now points to a
  2432.      second table using the old format. (Rene Ros)
  2433.  
  2434. tbtt (System [6.0.8])
  2435.      gestaltToolboxTable
  2436.      Returns the base address of the Toolbox trap table.
  2437.  
  2438.      #define gestaltToolboxTable 'tbtt' /* Toolbox trap table base */
  2439.  
  2440. te   (System [6.0.5])
  2441.      gestaltTextEditVersion
  2442.      Returns a value that indicates which version of TextEdit is present.
  2443.  
  2444.      enum {
  2445.      #define gestaltTextEditVersion 'te  ' /* TextEdit version number */
  2446.      gestaltTE1 = 1,  /* TextEdit in MacIIci ROM */
  2447.      gestaltTE2 = 2,  /* TextEdit with 6.0.4 Script Systems on MacIIci */
  2448.                       /*  (Script bug fixes for MacIIci) */
  2449.      gestaltTE3 = 3,  /* TextEdit with 6.0.4 Script Systems all but */
  2450.                       /*  MacIIci */
  2451.      gestaltTE4 = 4,  /* TextEdit in System 7.0 */
  2452.      gestaltTE5 = 5,  /* TextWidthHook available in TextEdit */
  2453.      gestaltTE6 = 6}; /* TextEdit in System 8.0 &AS20 */
  2454.  
  2455.      ======================================================================
  2456.      Version numbers for TextEdit
  2457.      ======================================================================
  2458.      Returned value       New Features           System software   Hardware
  2459.      ----------------------------------------------------------------------
  2460.      gestaltUndefSelector Multistyled TE         before 6.0.4      all
  2461.      gestaltTE1                                  6.0.4 Roman       IIci
  2462.      gestaltTE2           New width              6.0.4 non-Roman   IIci
  2463.                           measurement hook
  2464.                           Script Mgr compatible
  2465.      gestaltTE3                                  6.0.4 non-Roman   non-IIci
  2466.      gestaltTE4           TEFeatureFlag          6.0.5             all
  2467.      gestaltTE5           Text width             7.0               all
  2468.                           measurement hook
  2469.      gestaltTE6           ???                    8.0               all?
  2470.      ----------------------------------------------------------------------
  2471.      (Original source: Inside Macintosh Text, p.2-23)
  2472.  
  2473.      NOTE:
  2474.      The inline input features (also in TextEdit version 5) are also
  2475.      available with System 6.0.7 using non-Roman script systems, but there
  2476.      is no Gestalt constant that indicates this availability. &AD19
  2477.  
  2478. teat (Macintosh Drag and Drop ext [1.0])
  2479.      gestaltTEAttr &AD05
  2480.      Returns information about the functions and capabilities of TextEdit.
  2481.  
  2482.      enum {
  2483.      gestaltTEAttr 'teat' /* TextEdit attributes */
  2484.      gestaltTEHasGetHiliteRgn     = 0,  /* TEGetHiliteRgn present */
  2485.      gestaltTESupportsInlineInput = 1,  /* TextEdit does Inline Input */
  2486.                                         /*  &AS20 */
  2487.      gestaltTESupportsTextObjects = 2}; /* TextEdit does Text Objects */
  2488.                                         /*  &AS20 */
  2489.  
  2490. tele (System [7.5])
  2491.      (Telephone Manager Extension ext [2.0?], part of Apple Telecom)
  2492.      gestaltTelephoneMgrAttr?
  2493.      Returns information about the Telephone Mgr.
  2494.  
  2495.      enum {
  2496.      #define gestaltTeleMgrAttr 'tele'
  2497.      gestaltTeleMgrPresent          = 0,
  2498.      gestaltTeleMgrPowerPCSupport   = 1,
  2499.      /* below installed by Telephone Mgr 2.0? &AD21 */
  2500.      gestaltTeleMgrSoundStreams     = 2,
  2501.      gestaltTeleMgrAutoAnswer       = 3,
  2502.      gestaltTeleMgrIndHandset       = 4,
  2503.      gestaltTeleMgrSilenceDetect    = 5,
  2504.      gestaltTeleMgrNewTELNewSupport = 6};
  2505.  
  2506. term (System [7.1])
  2507.      gestaltTermMgrAttr
  2508.      Returns information about the Terminal Manager.
  2509.  
  2510.      enum {
  2511.      #define gestaltTermMgrAttr 'term' /* Terminal Mgr attributes */
  2512.      gestaltTermMgrPresent     = 0,  /* Terminal Mgr is present */
  2513.      gestaltTermMgrErrorString = 2}; /* &AS04 */
  2514.  
  2515. thds (Thread Manager ext [1.1]) &AD04
  2516.      (QuickDraw GX ext [1.0?])
  2517.      (System [7.1.2?])
  2518.      gestaltThreadAttr
  2519.      Returns information about the Thread Manager.
  2520.  
  2521.      enum {
  2522.      #define gestaltThreadAttr 'thds'   /* Thread Manager attributes */
  2523.      gestaltThreadsPresent        = 0,  /* bit true if Threads present */
  2524.      gestaltSpecificMatchSupport  = 1,  /* bit true if 'exact match' API */
  2525.                                         /* supported */
  2526.      gestaltThreadsLibraryPresent = 2,  /* bit true if ThreadsLib is */
  2527.                                         /* present */
  2528.      gestaltSchedulerFix?         = 3,    /* preemptive scheduler fix */
  2529.                                         /* present? */
  2530.      gestalt???                   = 4}; /* unknown, System 7.5.1 */
  2531.  
  2532.      NOTES:
  2533.      IM OS Utilities lists this selector as 'gestaltThreadMgrAttr'.
  2534.  
  2535.      For unknown reasons, the gestaltThreadsLibraryPresent bit is not set when
  2536.      running under PPC-native mode, on KanjiTalk (Japanese) System 7.5.
  2537.      (Laurent Humbert)
  2538.  
  2539. tmgr (System [6.0.4])
  2540.      gestaltTimeMgrVersion
  2541.      Returns a value that indicates the version of the Time Manager.
  2542.  
  2543.      enum {
  2544.      #define gestaltTimeMgrVersion 'tmgr' /* Time Mgr version */
  2545.      gestaltStandardTimeMgr = 1,  /* Standard Time Mgr */
  2546.      gestaltRevisedTimeMgr  = 2,  /* Revised Time Mgr */
  2547.      gestaltExtendedTimeMgr = 3}; /* Extended Time Mgr */
  2548.  
  2549. tpad (System? [7.5?] on PowerBook 520/540?)
  2550.      Indicates precense of a trackpad? As such used in the 'IsTrackPad.c'
  2551.      file included with the Apple Guide Authoring Kit.
  2552.  
  2553. tsma (System? [???])
  2554.      gestaltTSMgrAttr &AS14
  2555.      Returns information about the Text Services Manager.
  2556.  
  2557.      enum {
  2558.      #define gestaltTSMgrAttr 'tsma' /* Text Services Mgr attributes */
  2559.      gestaltTSMDisplayMgrAwareBit = 0;  /* TSM knows about Display Mgr */
  2560.      gestaltTSMdoesTSMTEBit       = 1}; /* TSM has integrated TSMTE &AS20 */
  2561.  
  2562. tsmv (System [7.1])
  2563.      gestaltTSMgrVersion &AT05
  2564.      Returns Text Services Manager version in BCD.
  2565.  
  2566.      enum {
  2567.      #define gestaltTSMgrVersion 'tsmv' /*Text Services Mgr version */
  2568.      gestaltTSMgr2 = 0x200}; /* &AS20 */
  2569.  
  2570. tv   (System? [???])
  2571.      (Video Startup ext [1.0], part of European Video Installer)
  2572.      gestaltTVAttr &AS14
  2573.      Returns information about the TV capabilities?
  2574.  
  2575.      enum {
  2576.      #define gestaltTVAttr 'tv  ' /* TV Version [huh? ed.] */
  2577.      gestaltHasTVTuner            = 0,  /* supports Philips FL1236F */
  2578.                                         /*  video tuner */
  2579.      gestaltHasSoundFader         = 1,  /* supports Philips TEA6330 */
  2580.                                         /*  Sound Fader chip */
  2581.      gestaltHasHWClosedCaptioning = 2,  /* supports Philips SAA5252 */
  2582.                                         /*  Closed Captioning */
  2583.      gestaltHasIRRemote           = 3,  /* supports CyclopsII Infra Red */
  2584.                                         /*  Remote Control */
  2585.      gestaltHasVidDecoderScaler   = 4,  /* supports Philips SAA7194 */
  2586.                                         /*  Video Decoder/Scaler */
  2587.      gestaltHasStereoDecoder      = 5}; /* supports Sony SBX1637A-01 */
  2588.                                         /*  stereo decoder */
  2589.  
  2590.      NOTE:
  2591.      A Power Macintosh 6100/66 with AV card and System 7.5.1 had both bit
  2592.      3 and 4 set. A Quadra 605, LC475, PM 6100/60, Performa 5200 (all with
  2593.      System 7.5.x) only had bit 3 set. Where is the remote control, then?
  2594.      Selector not installed on Quadra 700 and PB Duo 210 (also System
  2595.      7.5.1 & 7.5upd2). (John Tsombakos, Rene Ros)
  2596.      An LC630 didn't had bit 5 set, while it is supposed to have a stereo
  2597.      decoder. (Eric-Paul Rebel)
  2598.  
  2599. ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) &AT03
  2600.      gestaltForeignFileAccessVersion?
  2601.      Returns Foreign File Access version in BCD.
  2602.  
  2603.      #define gestaltForeignFileAccessVersion? 'ufox';
  2604.                                           /* Foreign File Access version */
  2605.  
  2606.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  2607.  
  2608. vers (System [6.0.4])
  2609.      gestaltVersion
  2610.      Returns the version of Gestalt as INTEGER.
  2611.  
  2612.      enum {
  2613.      #define gestaltVersion 'vers'     /* Gestalt version */
  2614.      gestaltValueImplementedVers = 5}; /* Version implementing */
  2615.                                        /*  GestaltValue &AD21 */
  2616.  
  2617.      NOTE:
  2618.      Usually version 1 is present. On machines with ROM version 1917
  2619.      (Quadra 840AV, PowerMacs etc.) version 4 is present.
  2620.      Version 5 is installed by System 7.5 adding support for the
  2621.      GestaltValue calls. And version 6 is installed by System 7.5.1.
  2622.      (Rene Ros, Anonymous)
  2623.  
  2624. via1 (System [6.0.4, discontinued])
  2625.      gestaltVIA1Addr
  2626.      Returns the address of VIA 1.
  2627.  
  2628.      #define gestaltVIA1Addr 'via1' /* VIA 1 address */
  2629.  
  2630.      NOTE:
  2631.      At least on a Performa 450 (LC III) this selector and 'via2' exists for
  2632.      a short moment, until they are removed (by the system?).
  2633.      (Anthony DeRobertis)
  2634.  
  2635. via2 (System [6.0.4, discontinued])
  2636.      gestaltVIA2Addr
  2637.      Returns the address of VIA 2.
  2638.  
  2639.      #define gestaltVIA2Addr 'via2' /* VIA 2 address */
  2640.  
  2641.      NOTE:
  2642.      At least on a Performa 450 (LC III) this selector and 'via1' exists for
  2643.      a short moment, until they are removed (by the system?).
  2644.      (Anthony DeRobertis)
  2645.  
  2646. vm   (System [6.0.4])
  2647.      gestaltVMAttr
  2648.      Returns information about virtual memory.
  2649.  
  2650.      enum {
  2651.      #define gestaltVMAttr 'vm  '
  2652.      gestaltVMPresent      = 0,  /* set; virtual memory present */
  2653.      gestaltVMNotInstalled = 0}; /* clear; virtual memory not present */
  2654.  
  2655.      NOTE:
  2656.      Starting with Copland (System 8?) VM is always on but this selector
  2657.      will tell VM is off. A future selector allows to test if the
  2658.      microkernel is running and thus if VM is actually used. &AD10/AD22
  2659.  
  2660. wind (System [Copland?])
  2661.      gestaltWindowMgrAttr &AD21
  2662.      Returns information about the Window Manager.
  2663.  
  2664.      enum {
  2665.      #define gestaltWindowMgrAttr  'wind'
  2666.      kSystemEightWindowMgr      = 0,
  2667.      kSystemEightWindowsVersion = 8,
  2668.      kLatestWindowsVersion      = 8};
  2669.  
  2670.      WARNING:
  2671.      From the Preliminary Copland Headers. May change in the future.
  2672.  
  2673.      NOTE:
  2674.      The constants indicate Copland may be called System 8. Also, is
  2675.      it 'Window Manager' or 'WindowS Manager'? :-) (Rene Ros)
  2676.  
  2677. wma. (System [7.0])
  2678.      (Responder ext [2.0?])
  2679.      gestaltResponderAttr
  2680.      Returns information about the Workstation Management Agent a.k.a.
  2681.      Responder.
  2682.  
  2683.      enum {
  2684.      #define gestaltResponderAttr 'wma.' /* Responder attributes */
  2685.      gestaltResponderPresent = 0}; /* Responder is present */
  2686.  
  2687. xlat (Macintosh Easy Open cp [1.0]) &AD03
  2688.      gestaltTranslationAttr
  2689.      Returns information about the Translation Manager.
  2690.  
  2691.      enum {
  2692.      #define gestaltTranslationAttr 'xlat' /* Translation Mgr attrib. */
  2693.      gestaltTranslationMgrExists       = 0,  /* TM present */
  2694.      gestaltTranslationMgrHintOrder    = 1,  /* TRUE if hint order */
  2695.                                              /*  reversal bug is fixed */
  2696.      gestaltTranslationPPCAvail        = 2,  /* PPC Lib. available */
  2697.      gestaltTranslationGetPathAPIAvail = 3,  /* GetFileTranslationPath & */
  2698.                                              /*  GetPathTranslationDialog*/
  2699.                                              /*  available */
  2700.      gestalt???                        = 4}; /* by MEO 1.1 and later */
  2701.  
  2702. xttt (System [6.0.8])
  2703.      gestaltExtToolboxTable
  2704.      Returns the base address of the second half of the Toolbox trap table
  2705.      if the table is discontiguous. If the table is contiguous, this
  2706.      selector returns zero. &AD19
  2707.  
  2708.      #define gestaltExtToolboxTable 'xttt' /* Extended Toolbox trap table*/
  2709.  
  2710.      NOTE:
  2711.      This selector may be installed but returns gestaltUnknownErr instead
  2712.      of zero when the table is contiguous? (Rene Ros)
  2713.  
  2714. Apple Additional Software
  2715. =========================
  2716. This chapter lists selector codes of which the meaning is known and are
  2717. installed by additional, non-system software, software from Apple.
  2718.  
  2719. q3v  (QuickDraw 3D ext? [1.0.2])
  2720.      gestaltQD3DVersion &AD30
  2721.      Returns the version of QuickDraw 3D as a Double BCD.
  2722.  
  2723.      #define gestaltQD3DVersion 'q3v '
  2724.  
  2725.      NOTE:
  2726.      Selector was not defined with documentation, but version 1.0.3 was
  2727.      seen to install this selector with a response value similair to
  2728.      its version.
  2729.  
  2730. arb  (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
  2731.      gestaltArbitorAttr &AD02
  2732.      Returns information about the Serial Port Arbitration.
  2733.  
  2734.      enum {
  2735.      #define gestaltArbitorAttr 'arb '    /* Serial Port Arbitration */
  2736.                                           /*  attributes */
  2737.      gestaltSerialArbitrationExists = 0}; /* Serial Port Arbitration */
  2738.                                           /*  installed */
  2739.  
  2740. calb (OpenDoc? [???])
  2741.      gestaltCALibVersion
  2742.      Returns the version of the CA Library as BCD?
  2743.  
  2744.      #define gestaltCALibVersion 'calb';
  2745.      #define CALIB_VERSION_1 ((short)0x0100)
  2746.  
  2747. cltn (QuickDraw GX [1.0])
  2748.      gestaltCollectionMgrVersion
  2749.      Returns the version of the Collection Manager as NumVersion.
  2750.  
  2751.      #define gestaltCollectionMgrVersion 'cltn' /* Collection Mgr version*/
  2752.  
  2753.      NOTE:
  2754.      The Collection Manager is a set of routines for maintaining tagged
  2755.      collections of data; GX uses it to support the "tags" that you can
  2756.      attach to GX objects, for holding special data, including
  2757.      user-defined data. (Lawrence D'Oliveiro)
  2758.  
  2759. gc24 (8*24 GC cp [???])
  2760.      gestaltGC24? &M07
  2761.      Returns the version of the 8*24 GC software for the Macintosh
  2762.      Display Card 8*24 GC as BCD?
  2763.  
  2764.      #define gestaltGC24? 'gc24'
  2765.  
  2766.      NOTE:
  2767.      This selector is also installed when no card is available. A value
  2768.      returned when no card is installed is 0xFFFF D8EB.
  2769.  
  2770. gfxa (QuickDraw GX [1.0])
  2771.      gestaltGraphicsAttr
  2772.      Returns information about the Graphics.
  2773.  
  2774.      enum {
  2775.      #define gestaltGraphicsAttr 'gfxa' /* graphics attributes bits  */
  2776.      gestaltGraphicsIsDebugging = 0x0001,
  2777.      gestaltGraphicsIsLoaded    = 0x0002,
  2778.      gestaltGraphicsIsPowerPC   = 0x0004};
  2779.  
  2780.      NOTE: Not bit values but bit masks? Use AND?
  2781.  
  2782. grfx (QuickDraw GX ext [1.0])
  2783.      gestaltGraphicsVersion
  2784.      Returns the version of the Graphics as ???.
  2785.  
  2786.      enum {
  2787.      #define gestaltGraphicsVersion 'grfx' /* Gestalt version selector */
  2788.      gestaltCurrentGraphicsVersion = 0x00010000}; /* supposed value */
  2789.                                                   /*  returned */
  2790.  
  2791. kids (At Ease [1.0])
  2792.      kAtEaseGestalt
  2793.      Returns a handle to a structure holding information about At Ease.
  2794.  
  2795.      The following code was published by Apple &AT06:
  2796.  
  2797.      #define kAtEaseGestalt    'kids'
  2798.      typedef struct {
  2799.        short  giVersion;         /* structure version */
  2800.        short  giIsActive;        /* true if at ease is currently running */
  2801.        short  giAutoCreateAlias; /* if true then auto create alias */
  2802.        short  giRequestFloppy;   /* if true then request floppy on new
  2803.                                     saves */
  2804.        short  giStacksAreApps;   /* if true then HyperCard stacks are shown
  2805.                                     with applications */
  2806.        FSSpec giItemsLocation;   /* location of the At Ease Items folder */
  2807.        {more version 2 fields???}
  2808.      } GestaltRec, *GestaltRecPtr, **GestaltRecHand;
  2809.  
  2810. mess (QuickDraw GX [1.0])
  2811.      gestaltMessageMgrVersion
  2812.      Returns the version of the Message Manager as ???.
  2813.  
  2814.      #define gestaltMessageMgrVersion 'mess' /* Message Mgr version */
  2815.  
  2816.      NOTE:
  2817.      The Message Manager is an implementation of object-oriented-style
  2818.      message passing within an inheritance hierarchy, that can be used from
  2819.      non-OO languages.
  2820.      It is used by the GX printing system, to allow the customization of
  2821.      printing behaviour by letting applications (and developers of printing
  2822.      extensions) intercept messages sent to the printer driver.
  2823.      (Lawrence D'Oliveiro)
  2824.  
  2825. mtlk (QuickTime Conferencing ext? [1.0?])
  2826.      gestaltQuickTimeConferencing
  2827.      Returns the version of QuickTime Conferencing as NumVersion.
  2828.  
  2829.      #define gestaltQuickTimeConferencing 'mtlk'
  2830.  
  2831. mtv2 (Video Player app [???])
  2832.      (Video Startup ext [1.0], part of European Video Installer)
  2833.      gestaltTV &AD16
  2834.      "Indicates whether the Video Player app is present."
  2835.  
  2836. otan (??? [???])
  2837.      gestaltOpenTpt &AS18
  2838.      Returns information about the Open Transport software.
  2839.  
  2840.      enum {
  2841.      #define gestaltOpenTpt 'otan'
  2842.      gestaltOpenTptPresent          = 0x00000001,
  2843.      gestaltOpenTptLoaded           = 0x00000002,
  2844.      gestaltOpenTptAppleTalkPresent = 0x00000004,
  2845.      gestaltOpenTptAppleTalkLoaded  = 0x00000008,
  2846.      gestaltOpenTptTCPPresent       = 0x00000010,
  2847.      gestaltOpenTptTCPLoaded        = 0x00000020,
  2848.      gestaltOpenTptNetwarePresent   = 0x00000040,
  2849.      gestaltOpenTptNetwareLoaded    = 0x00000080};
  2850.  
  2851.      NOTE:
  2852.      Contrary to the 'ot  ' selector this one is really installed by
  2853.      Open Transport.
  2854.  
  2855. pmgr (QuickDraw GX [1.0])
  2856.      gestaltGXPrintingMgrVersion
  2857.      Returns the version of the QuickDraw GX Printing Manager as ???.
  2858.  
  2859.      #define gestaltGXPrintingMgrVersion 'pmgr' /* QD GX Printing Mgr */
  2860.                                                 /*  version */
  2861.  
  2862.      NOTE:
  2863.      The QuickDraw GX documentation lists this selector incorrectly as
  2864.      'gestaltPrintingMgrVersion'. (Ken Prehoda)
  2865.  
  2866. q3vc (QuickDraw 3D ??? [???])
  2867.      gestaltQD3DViewer
  2868.      Returns information about the QuickDraw 3D Viewer.
  2869.  
  2870.      enum {
  2871.      #define gestaltQD3DViewer 'q3vc'
  2872.      gestaltQD3DViewerNotPresent = 0,
  2873.      gestaltQD3DViewerAvailable  = 1};
  2874.  
  2875. qd3d (QuickDraw 3D ext? [1.0?])
  2876.      gestaltQD3D
  2877.      Returns if QuickDraw 3D is installed or not (no attribute bits?).
  2878.  
  2879.      enum {
  2880.      #define gestaltQD3D 'qd3d'
  2881.      gestaltQD3DNotPresent = 0,
  2882.      gestaltQD3DAvailable = 1};
  2883.  
  2884.      WARNING:
  2885.      Info from QuickDraw 3D Alpha 2 headers, may change before going
  2886.      final! (Anonymous)
  2887.  
  2888.      NOTE:
  2889.      Is there a bug with the selector function for QD 3D 1.0b1c5? Whenever
  2890.      the 'qd3d' selector is used on a PM 6100/66 (System 7.5.1) crashes
  2891.      with a 'PowerPC illegal instruction'. This is when using the Gestalt
  2892.      dcmd in Macsbug or any of the Gestalt utilities.
  2893.      (found by John Mancino and Rene Ros)
  2894.  
  2895. qdgx (QuickDraw GX [1.0])
  2896.      gestaltGXVersion
  2897.      Returns the version of QuickDraw GX as ???.
  2898.  
  2899.      #define gestaltGXVersion 'qdgx' /* QuickDraw GX version */
  2900.  
  2901.      NOTE:
  2902.      Both the values 0x0100 8000 and 0x0001 0001 were observed.
  2903.  
  2904. srta (Speech Recognition ext [1.2.1?])
  2905.      gestaltSpeechRecognitionAttr
  2906.      Returns information about the Speech Recognition software.
  2907.  
  2908.      enum {
  2909.      #define gestaltSpeechRecognitionAttr 'srta'
  2910.      gestaltDesktopSpeechRecognition   = 0,      /* Recognition using mic. */
  2911.      gestaltTelephoneSpeechRecognition = 1};     /* FUTURE */
  2912.  
  2913.      NOTE:
  2914.      The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
  2915.      selector is installed on all machines and the response value will
  2916.      indicate the speech recognition is available. (Rene Ros)
  2917.  
  2918. srtb (Speech Recognition ext [1.2.1?])
  2919.      gestaltSpeechRecognitionVersion
  2920.      Returns the version of the Speech Recognition software as BCD.
  2921.  
  2922.      #define gestaltSpeechRecognitionVersion 'srtb'
  2923.  
  2924.      NOTE:
  2925.      The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
  2926.      selector is installed on all machines and its presence will indicate
  2927.      the speech recognition is available. (Rene Ros)
  2928.  
  2929. strm (Remote Access Aliases [1.0], part of Apple Remote Access)
  2930.      gestaltRemoteAccessAttr &AD02
  2931.  
  2932.      enum {
  2933.      #define gestaltRemoteAccessAttr 'strm' /* Remote Access attributes */
  2934.      gestaltRemoteAccessExists   = 0,  /* ARA Connection Interface is */
  2935.                                        /*  available */
  2936.      gestaltRemoteAccessCallOnly = 1,  /* checks for ARA client &AD15 */
  2937.      gestaltRemoteAccessMPServer = 2,  /* checks for ARA multi-port */
  2938.                                        /*  server &AD15 */
  2939.      gestaltRemoteAccessVers2    = 3}; /* checks for ARA 2.0 features */
  2940.                                        /*  &AD15 */
  2941.  
  2942. tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
  2943.      gestaltTSMTEAttr &AS07
  2944.      Returns information about the Text Services Manager for TextEdit.
  2945.  
  2946.      enum {
  2947.      #define gestaltTSMTEAttr 'tmTE' /* TSM for TE attributes */
  2948.      gestaltTSMTEPresent = 0,                   /* TSM for TE is present */
  2949.      gestaltTSMTE        = gestaltTSMTEPresent};/* old name */
  2950.  
  2951. tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
  2952.      gestaltTSMTEVersion &AS07
  2953.      Returns the version of the Text Services Manager for TextEdit as BCD.
  2954.  
  2955.      enum {
  2956.      #define gestaltTSMTEVersion 'tmTV' /* TSM for TE version */
  2957.      gestaltTSMTE1 = 0x100,  /* TSM for TE version 1.0 */
  2958.      gestaltTSMTE2 = 0x200}; /* TSM for TE version 2.0 &AS20 */
  2959.  
  2960. ttsc (Text-To-Speech Manager ext [1.0?])
  2961.      gestaltSpeechAttr
  2962.      Returns information about the Speech Manager.
  2963.  
  2964.      enum {
  2965.      #define gestaltSpeechAttr 'ttsc' /* Text-To-Speech Manager attrib. */
  2966.      gestaltSpeechMgrPresent = 0,  /* bit true if Speech Mgr present */
  2967.      gestaltSpeechHasPPCGlue = 1}; /* Speech Mgr has native PPC glue */
  2968.  
  2969.      NOTE:
  2970.      With System 7.5.1 on a PowerBook Duo 210 this selector had both
  2971.      bits set indicating the PPC Glue is available, while it is not.
  2972.      (Rene Ros)
  2973.  
  2974. unic (System [Copland?])
  2975.      gestaltUnicodeFeatures &AD21
  2976.      Returns information about Unicode.
  2977.  
  2978.      enum {
  2979.      #define gestaltUnicodeFeatures 'unic'
  2980.      gestaltUnicodeConverterPresent = 0,
  2981.      gestaltUnicodeConverterMask = 1L << gestaltUnicodeConverterPresent};
  2982.  
  2983.      WARNING:
  2984.      From the Preliminary Copland Headers. May change in the future.
  2985.  
  2986. ws 1 (WorldScript I ext [7.1?])
  2987.      gestaltWorldScriptIVersion?
  2988.      Returns version of WorldScript I software as BCD.
  2989.  
  2990.      #define gestaltWorldScriptIVersion? 'ws 1'
  2991.  
  2992. XTND (??? [???])
  2993.      gestaltXTNDAttr &AS10
  2994.      Returns information about XTND Manager?
  2995.  
  2996.      enum {
  2997.      #define gestaltXTNDAttr 'XTND'
  2998.      gestaltPPCXTNDPresent = 1};
  2999.  
  3000.      NOTE:
  3001.      Is used in some code to check if XTND engine is present. However it is
  3002.      unknown when it is installed, so supposedly it is meant for future
  3003.      use. Like a built-in XTND engine in the System Software? When the
  3004.      selector is installed all operations are dispatched through trap
  3005.      _XTNDMgr (0xABF4) otherwise the library provides the code.
  3006.      (Marco Piovanelli)
  3007.  
  3008. Third Parties Software
  3009. ======================
  3010. This chapter lists selector codes of which the meaning is known and are
  3011. installed by Third Parties software.
  3012.  
  3013. !SYM (Symbionts ext [1.0] by B. Kevin Hardman)
  3014.      gestaltSymbiontsTable
  3015.      Returns a pointer to a structure containing the size of the System
  3016.      Heap before and after loading the INITs.
  3017.  
  3018.      #define gestaltSymbiontsTable '!SYM' /* Symbionts address */
  3019.  
  3020. ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
  3021.      gestaltAfterDarkFolder &M05
  3022.      Returns a pointer to a procedure that gives the DirID and vRefNum of
  3023.      the 'After Dark Files' folder.
  3024.  
  3025.      #define gestaltAfterDarkFolder 'ADfd'
  3026.  
  3027.      NOTE:
  3028.      See for more information the AfterDark Gestalt header file. It
  3029.      is available by sending email to
  3030.      gestalt-selectors-list-request@bio.vu.nl using the command
  3031.      'archive get src/AfterDarkGestalt.h'
  3032.      Or by emailing to Berkeley Systems Mac Tech Support at
  3033.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3034.  
  3035. ADrk (AfterDark [2.0] by Berkeley Systems, Inc.)
  3036.      gestaltAfterDarkAttr &M05
  3037.      Returns a longword bitmask containing public information about
  3038.      After Dark.
  3039.  
  3040.      enum {
  3041.      gestaltAfterDarkAttr = 'ADrk'; /* After Dark states */
  3042.      eSystemIQActive      = 0,  /* SystemIQ activity monitor active */
  3043.      eSoundActive         = 1,  /* AD has allocated a sound channel */
  3044.      eADAcquiringPassword = 2}; /* After Dark has its password dialog up */
  3045.  
  3046.      NOTE:
  3047.      See for more information the AfterDark Gestalt header file. It
  3048.      is available by sending email to
  3049.      gestalt-selectors-list-request@bio.vu.nl using the command
  3050.      'archive get src/AfterDarkGestalt.h'
  3051.      Or by emailing to Berkeley Systems Mac Tech Support at
  3052.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3053.  
  3054. AlaC (A La Carte ext [1.1?] by Denali Software Development)
  3055.      gestaltALaCarte?
  3056.      Returns the address of the A La Carte INIT global data. The structure
  3057.      of the data is proprietary.  The existence of the 'AlaC' selector
  3058.      indicates that the A La Carte INIT is loaded.
  3059.  
  3060.      #define gestaltALaCarte? 'AlaC'
  3061.  
  3062. ApoL (Apollo ext [1.0] by Jeremy Roussak)
  3063.      gestaltApolloTable
  3064.      Returns a handle to an instance of a structure.
  3065.  
  3066.      #define gestaltApolloTable 'ApoL' /* Apollo address */
  3067.  
  3068.      NOTE:
  3069.      See for more information the Programmers' Information chapter in the
  3070.      Apollo documentation. (Jeremy Roussak)
  3071.  
  3072. ASHI (Arashi app [???] by Juri Munkki)
  3073.      ???
  3074.      Returns information about the presence of Arashi by returning one (1)
  3075.      if loaded, and zero (0) when removed.
  3076.  
  3077. AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
  3078.      gestaltAutoBuildVersion
  3079.      Returns the version of AutoBuild as NumVersion.
  3080.  
  3081.      #define gestaltAutoBuildVersion 'AuBu' /* AutoBuild version */
  3082.  
  3083.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  3084.  
  3085. BBlk (Basic Black cp [1.3], by Mason L. Bliss)
  3086.      gestaltBasicBlackAddr
  3087.      Returns the address of Basic Black's patch globals.
  3088.  
  3089.      #define gestaltBasicBlackAddr 'BBlk' /* Basic Black address */
  3090.  
  3091.      NOTE:
  3092.      See documentation included with Basic Black for more information.
  3093.  
  3094. BIFF (QM Biff ext [1.0] by Patrick C. Beard)
  3095.      ???
  3096.      Determines if there is mail (QuickMail). The response long word is 1
  3097.      if you have mail, and 0 if you don't.
  3098.  
  3099. Cafe (Coffee Break appl [1.0] by Thomas Reed)
  3100.      gestaltCoffeeBreakAddr?
  3101.      Returns a pointer to a code resource owned by Coffee Break.
  3102.      Details are private.
  3103.  
  3104.      #define gestaltCoffeeBreakAddr? 'Cafe'
  3105.  
  3106. CHSR (ChooserUser cp [1.0b4] by Flux Software)
  3107.      Returned response is private.
  3108.  
  3109. CKI3 (AETracker cp [3.0] by C.K. Haun)
  3110.      kAETrackerGestalt
  3111.      This selector returns a pointer to the external interface routine for
  3112.      AETracker, details of which are in the AETracker interface guide.
  3113.      (C.K. Haun)
  3114.  
  3115.      #define kAETrackerGestalt 'CKI3' /* AETracker address */
  3116.  
  3117. CsWT (Desktop Strip cp [1.0b1] by Sigurdur Asgeirsson)
  3118.      gestaltDesktopStripAttr?
  3119.      Returns information about the installed Desktop Strip software.
  3120.  
  3121.      enum {
  3122.      #define gestaltDesktopStripAttr? 'CsWT'
  3123.      gestaltDesktopStripPresent? = 0};
  3124.  
  3125. dBgP (DBugR cp [1.0?] by Alessandro Levi Montalcini)
  3126.      ???
  3127.      Returns a pointer to a data structure with the preferences,
  3128.      identical to the data in the PREF resource, for which a template
  3129.      is included.
  3130.  
  3131.      NOTE: The d is actually the option-d character (0xB6).
  3132.  
  3133. EagL (Eagle ext [1.4], part of Apollo 1.1 by Jeremy Roussak)
  3134.      gestaltEagleAttr?
  3135.      Returns information about the state of the Eagle background
  3136.      application.
  3137.  
  3138.      enum {
  3139.      #define gestaltEagleAttr? 'EagL' /* Eagle attributes */
  3140.      gestaltEaglePPCReady? = 0}; /* Eagle can accept next PPC */
  3141.  
  3142. FPUE (SoftwareFPU cp [3.0?] by John Neil & Associates) &M06
  3143.      gestaltSoftwareFPUAddr?
  3144.      Detects presence of SoftwareFPU.
  3145.      If the result of the Gestalt call is noErr, then SoftwareFPU is
  3146.      installed, and the 68881 FPU reported by the gestaltFPUType selector
  3147.      is an emulated FPU. The value returned in the response is private and
  3148.      should be ignored.
  3149.  
  3150.      #define gestaltSoftwareFPUAddr? 'FPUE'
  3151.  
  3152. FrcP (Decor cp [1.0] by Francois Pottier)
  3153.      gestaltDecorAddr
  3154.      Returns a pointer to a structure which can be read or changed, and
  3155.      enables programmers to change the picture on the desktop.
  3156.  
  3157.      #define gestaltDecorAddr 'FrcP' /* Decor address */
  3158.  
  3159.      NOTES:
  3160.      See for more information on how to use this structure the
  3161.      documentation included with Decor 1.0 or later.
  3162.  
  3163.      The c is actually the option-c character (0x8D).
  3164.  
  3165. Frs1 (MegaDial cp [1.0] by Cypress Research)
  3166.      gestaltMegaDialAttr?
  3167.      Returns private information about MegaDial.
  3168.  
  3169.      #define gestaltMegaDialAttr? 'Frs1'
  3170.  
  3171. FrsH (MegaDial cp [1.0] by Cypress Research)
  3172.      gestaltMegaDialAddr?
  3173.      Returns a pointer to a private function.
  3174.  
  3175.      #define gestaltMegaDialAddr? 'FrsH'
  3176.  
  3177. FWRT (FullWrite app [2.0] by Akimbo Systems)
  3178.      gestaltFullWriteInfo
  3179.      Returns a handle to a FullWrite callbacks data structure when
  3180.      FullWrite is currently running. If it is not running 0 (zero) is
  3181.      returned.
  3182.  
  3183.      #define gestaltFullWriteInfo 'FWRT'
  3184.  
  3185.      NOTE:
  3186.      See for more information the FullWrite Extension SDK (For more
  3187.      information contact Akimbo Systems by email at FullWrite@akimbo.com)
  3188.  
  3189. Gast (Gestalt! appl [2.9.2] by Roland Mansson)
  3190.      gestaltGestaltVersion
  3191.      Returns the version of the application as NumVersion.
  3192.      GestaltValue is removed when application quits. Just for fun.
  3193.      (Roland Mansson)
  3194.  
  3195.      #define gestaltGestaltVersion 'Gast' /* Gestalt! version */
  3196.  
  3197.      NOTE: The a is actually the option-u/a character (0x8A).
  3198.  
  3199. GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
  3200.      ???
  3201.      Snippet code, see documentation.
  3202.  
  3203. GWat (GestaltWatch ext [1.0] by Scot Bronson)
  3204.      ???
  3205.      Returns pointer to structure where collected information is stored.
  3206.  
  3207.      NOTE: In development, not yet available.
  3208.  
  3209. ICTE (ICeTEe ext [1.1], part of Internet Config
  3210.                         by Quinn "The Eskimo!" and Peter N. Lewis)
  3211.      gestaltInternetConfigTEAddr?
  3212.      Returns the address of a record which is documented in the
  3213.      IC Programmer's Kit.
  3214.  
  3215.      #define gestaltInternetConfigTEAddr? 'ICTE'
  3216.  
  3217. idle (IdleTime INIT [1.0] by UserLand Software)
  3218.      gestaltIdleTime?
  3219.      Returns the number of clock ticks since the last keystroke, disk
  3220.      insertion,  mouse movement or mouse click.
  3221.  
  3222.      #define gestaltIdleTime? 'idle'
  3223.  
  3224. IF 8 (Speak Note cp [???] by Glenn R. Howes)
  3225.      gestaltSpeechNoteAttr?
  3226.      Returns information about the installed copy of Speak Note.
  3227.  
  3228.      enum {
  3229.      #define gestaltSpeechNoteAttr? 'IF 8'
  3230.      gestaltSpeechNoteAvailable = 0};
  3231.  
  3232. InMn (InternetMemory cp [1.0] by CircleDream Software)
  3233.      gestaltInternetMemory
  3234.      Returns information still private, until after the first release.
  3235.  
  3236.      #define gestaltInternetMemory 'InMn'
  3237.  
  3238. JMBe (Traceroute Ethernet LAP [1.0] by Jim Browne)
  3239.      gestalt???
  3240.      Returns the address of a structure as documented in the header file
  3241.      'RawIP.h' to allow application programs to perform Raw IP writes and
  3242.      filter all incoming IP packets.
  3243.  
  3244.      #define gestalt??? 'JMBe'
  3245.  
  3246. Kals (Alias Assistant cp [TrashAlias 1.0] formerly TrashAlias,
  3247.                                           by Flux Software)
  3248.      Returned response is private.
  3249.  
  3250. Lnch (Network Time cp [2.0] by Pete Resnick)
  3251.      (First Launch Gestalt INIT code resource, by Pete Resnick)
  3252.      gestaltFirstLaunchAttr
  3253.      Returns info on whether the _Launch trap has been called by the
  3254.      System.
  3255.  
  3256.      enum {
  3257.      #define gestaltFirstLaunchAttr 'Lnch' /* _Launch information */
  3258.      gestaltFirstLaunchDone = 0}; /* _Launch called, INIT time over */
  3259.  
  3260.      NOTE:
  3261.      Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
  3262.      _Launch trap has been called since startup of the machine. All other
  3263.      bits are reserved and currently 0. Even if not installed at INIT time,
  3264.      Network Time will install the Gestalt selector if it is not already
  3265.      there when the control panel is opened and automatically set
  3266.      bit 0 to 1.
  3267.      68000 assembler source code is available for the INIT that installs
  3268.      the selector, and INIT resource -4048 from Network Time may be
  3269.      stolen (and renumbered as desired) and used in any INIT file as
  3270.      desired. (Pete Resnick)
  3271.  
  3272. MFK+ (Program Switcher ext [2.0] by Michael F. Kamprath)
  3273.      Returns a pointer to private data.
  3274.  
  3275. MOMM (Microsoft Office Manager cp [4.2.1] part of Microsoft Office [4.2.1],
  3276.       by Microsoft Corporation)
  3277.      gestaltMSOfficeMgr
  3278.      Returns a pointer to private data.
  3279.  
  3280.      #define gestaltMSOfficeMgr 'MOMM'
  3281.  
  3282.      NOTE:
  3283.      Microsoft Office Manager is a customizable control panel allowing easy
  3284.      access to Microsoft Office apps (or any other added applications,
  3285.      files, etc), setup, and help via a new system menu. Also incorporates
  3286.      the QuickSwitch feature of Command-Tabbing through current processes.
  3287.      (Terence Worley)
  3288.  
  3289. NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
  3290.      gestaltNovellIPXVersion
  3291.      Returns the version of MacIPX as NumVersion.
  3292.  
  3293.      #define gestaltNovellIPXVersion 'NIPX' /* MacIPX version */
  3294.  
  3295.      NOTE:
  3296.      If the selector returns an error (i.e. no such selector?) then MacIPX
  3297.      is not installed. If the selector returns 0 then MacIPX is installed
  3298.      but the driver is not open. Any other value is the version.
  3299.      (Duane Murphy)
  3300.  
  3301. NMBT (Attention cp [0.6] by Marco Piovanelli)
  3302.      gestaltAttentionAddr
  3303.      The response value returned is a pointer to a read-only parameter
  3304.      block in the system heap.
  3305.  
  3306.      #define gestaltAttentionAddr 'NMBT' /* Attention address */
  3307.  
  3308.      NOTE: See for more detailed information the included ReadMe file.
  3309.  
  3310. NTim (Network Time cp [2.0] by Pete Resnick)
  3311.      Returns information private to Network Time.
  3312.  
  3313. PNfs (FileSaver [3.0], part of Norton Utilities for Macintosh)
  3314.      Returns a private structure used by various portions of the
  3315.      Norton Utilities.
  3316.  
  3317. PPP  (PPP mdev [???], part of MacPPP by Merit Network, Inc. and the
  3318.       University of Michigan)
  3319.      gestalt???
  3320.      Returns the address of the Lap globals as documented in the header
  3321.      file 'ppp.h.source'. It's an absolutely enormous struct that contains
  3322.      among other things function pointers to let you open and close MacPPP.
  3323.      (Richard Buckle)
  3324.  
  3325.      #define gestalt??? 'PPP '
  3326.  
  3327.      NOTE:
  3328.      Source code of MacPPP is available at: ftp://merit.edu/pub/ppp/mac/
  3329.  
  3330. PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
  3331.      gestaltPwrSwitcherTable
  3332.      Returns a pointer to a private data structure (undocumented).
  3333.  
  3334.      #define gestaltPwrSwitcherTable 'PWRS' /* Power Switcher address */
  3335.  
  3336. SAVC (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  3337.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  3338.      (CDU cp [1.0?] by Connectix Corp.)
  3339.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  3340.      (PixelPlay? ??? [???] by ???)
  3341.      (ScreenDaemon ??? [1.0] by Mason L. Bliss)
  3342.      (Sleeper cp [1.1.4?] by St.Clair Software)
  3343.      gestaltScreenSaverControl &M05
  3344.      Returns a pointer to a routine of type
  3345.  
  3346.      typedef pascal OSErr (*SaverControlProcPtr) (SaverCommand command);
  3347.  
  3348.      which allows controlling the screen saver.
  3349.  
  3350.      #define gestaltScreenSaverControl 'SAVC'
  3351.  
  3352.      NOTE:
  3353.      See for more information the AfterDark Gestalt header file. It
  3354.      is available by sending email to
  3355.      gestalt-selectors-list-request@bio.vu.nl using the command
  3356.      'archive get src/AfterDarkGestalt.h'
  3357.      Or by emailing to Berkeley Systems Mac Tech Support at
  3358.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3359.  
  3360. SAVR (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  3361.      (Arashi app [???] by Juri Munkki)
  3362.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  3363.      (CDU cp [1.0?] by Connectix Corp.)
  3364.      (Coffee Break app [1.0] by Thomas Reed)
  3365.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  3366.      (PixelPlay? ??? [???] by ???)
  3367.      (ScreenDaemon ??? [1.0] by Mason L. Bliss)
  3368.      (Sleeper cp [1.1.4?] by St.Clair Software)
  3369.      gestaltScreenSaverAttr &M05
  3370.      Returns information about the current screen saver. Defined if a
  3371.      screen saver is installed.
  3372.  
  3373.      enum {
  3374.      #define gestaltScreenSaverAttr 'SAVR' /* Screen saver attributes */
  3375.      gestaltSaverTurnedOn      = 0;  /* saver enabled/disabled */
  3376.      gestaltSaverAsleep        = 1;  /* saver currently asleep */
  3377.      gestaltSaverDemoMode      = 2;  /* saver sleeping in demo mode */
  3378.      gestaltSaverPasswordMode  = 3;  /* saver sleeping in password- */
  3379.                                      /*  protected mode */
  3380.      gestaltAppDrawingDisabled = 4}; /* QD drawing disallowed between */
  3381.                                      /*  module animation frames */
  3382.  
  3383.      NOTE:
  3384.      See for more information the AfterDark Gestalt header file. It
  3385.      is available by sending email to
  3386.      gestalt-selectors-list-request@bio.vu.nl using the command
  3387.      'archive get src/AfterDarkGestalt.h'
  3388.      Or by emailing to Berkeley Systems Mac Tech Support at
  3389.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3390.  
  3391.      Thomas Reed wrote some source code (C) demonstrating how to install
  3392.      this selector. You can get a copy by sending email to
  3393.      gestalt-selectors-list-request@bio.vu.nl using the command
  3394.      'archive get src/gestalt-savr.txt'
  3395.  
  3396. SCom (Super Comments cp [CommentKeeper 1.0] formerly CommentKeeper,
  3397.                                             by Flux Software)
  3398.      Returned response is private.
  3399.  
  3400. SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
  3401.      kSDDelayCreator
  3402.      Returns a pointer to a data structure described in the documentation
  3403.      included with Shutdown Delay.
  3404.  
  3405.      #define kSDDelayCreator 'SDdD'
  3406.  
  3407.      NOTE: The d is actually the option-shift v character (0xD7).
  3408.  
  3409. sDmn (ScreenDaemon ext [1.0] by Mason L. Bliss)
  3410.      gestaltScreenDaemonAddr
  3411.      Returns the address of ScreenDaemon's patch globals.
  3412.  
  3413.      #define gestaltScreenDaemonAddr 'sDmn' /* ScreenDaemon address */
  3414.  
  3415. SHCM (Shared Code Manager ext [1.0] by Eric Schlegel of Microsoft Corp.)
  3416.      gestalt???
  3417.      Returns a pointer to an undocumented entrypoint into the Shared Code
  3418.      Manager.
  3419.  
  3420.      #define gestalt??? 'SHCM'
  3421.  
  3422.      NOTE:
  3423.      The Shared Code Manager (1991) is a simple DLL mechanism that is
  3424.      currently used by Microsoft's Mac OLE 1.0 (Object Linking & Embedding)
  3425.      and the applications that use OLE 1.0. (Eric Schlegel)
  3426.  
  3427. SKey (SmartKeys cp [OneSpace INIT] formerly OneSpace INIT,
  3428.                                    by Flux Software)
  3429.      Returned response is private.
  3430.  
  3431. SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
  3432.      gestaltStuffItSpaceSaverAddr
  3433.      Returns the address of the SpaceSaver "command module" which allows
  3434.      developers to access all the functions of SpaceSaver.
  3435.      (Leonard Rosenthol)
  3436.  
  3437.      #define gestaltStuffItSpaceSaverAddr 'SLip'
  3438.  
  3439. SnLv (??? [???])
  3440.      kGestaltLevelMeter
  3441.      Defined in the SoundLevel.c source file, distributed with the
  3442.      SoundLevel sample code.
  3443.  
  3444.      #define kGestaltLevelMeter 'SnLv'
  3445.  
  3446. SPAL (SpeakAlert ext [1.0] by Brian Stern)
  3447.      gestaltSpeakAlert
  3448.      Details are private to SpeakAlert.
  3449.  
  3450.      #define gestaltSpeakAlert 'SPAL'
  3451.  
  3452. SWVE (SimpleWave ext [1.0b1] by Rene G.A. Ros)
  3453.      gestaltSimpleWaveTable
  3454.      Returns a pointer to an INITGestalt structure.
  3455.  
  3456.      #define gestaltSimpleWaveTable 'SWVE'
  3457.  
  3458. TExT (FileTyper Menu cp [none], part of FileTyper by Daniel Azuma)
  3459.      gestaltTyperMenuAttr
  3460.      Returns information about the FileTyper Menu's operation.
  3461.  
  3462.      enum {
  3463.      #define gestaltTyperMenuAttr 'TExT'
  3464.      gestalt??? = 0}; /* TRUE = NO item added to Finder's File menu */
  3465.  
  3466.      WARNING:
  3467.      No currently released version of FileTyper Menu (up to and including
  3468.      4.1.1) installs this selector, but future versions may. Check for the
  3469.      existence of this selector first, if you use it. (Daniel Azuma)
  3470.  
  3471. TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
  3472.      ???
  3473.      The value returned is a pointer to a Monitor information block. &M04
  3474.      (Scott Bronson)
  3475.  
  3476. Typ4 (FileTyper Menu cp [4.1.1], part of FileTyper by Daniel Azuma)
  3477.      gestaltTyperMenuPriv
  3478.      Returns private information, the existence of this selector indicates
  3479.      FileTyper Menu is installed.
  3480.  
  3481.      #define gestaltTyperMenuPriv 'Typ4'
  3482.  
  3483.      NOTE:
  3484.      Third parties can determine if FileTyper Menu is installed by
  3485.      checking for the existence of this selector. However, the actual value
  3486.      returned is private and subject to change. (Daniel Azuma)
  3487.  
  3488. UMAM (Authentication Manager cp [1.0.7] by Robert John Churchill of the
  3489.                                            University of Michigan)
  3490.      gestaltAuthManVersion
  3491.      Returns the version of the Authentication Manager as Double BCD.
  3492.  
  3493.      #define gestaltAuthManVersion 'UMAM'
  3494.  
  3495. YeHa (SpeedyFinder7 cp [1.5.4?] by Victor Tan)
  3496.      ???
  3497.      Returns a pointer to a private data structure (undocumented).
  3498.  
  3499.      NOTE:
  3500.      The structure to which the Gestalt selector refers changes almost
  3501.      invariably from version to version of SF7. Should someone work out
  3502.      parts of the structure of the selector keep in mind that it will
  3503.      almost certainly change in the next minor release and definitely with
  3504.      the next major release. (Victor Tan)
  3505.  
  3506. Unknown Codes 
  3507. =============
  3508. The following sections list selector codes of which the meaning is unknown.
  3509.  
  3510. Unknown Codes Apple Software
  3511. ----------------------------
  3512. (OSType) 7
  3513.      (System [6.0.4])
  3514.      Returns (long)'carl' and a result code of noErr.
  3515.  
  3516. (OSType) 13
  3517.      (System [6.0.4])
  3518.      Returns (long)'bbmc' and a result code of noErr.
  3519.  
  3520. 3615 (Express Modem cp [1.0], part of Express Modem Software)
  3521. a pc (PC Setup? cp [1.0?], part of Quadra 610-DOS software)
  3522. admn (AppleShare Admin appl [3.0])
  3523.      gestaltASAdminAttr?
  3524.  
  3525.      enum {
  3526.      #define gestaltASAdminAttr? 'admn'
  3527.      gestaltASAdminPresent? = 0};
  3528.  
  3529. ag_e (7.0/7.1 Apple Guide Enabler ext [???] part of Apple Guide 2.0)
  3530.      gestaltAppleGuideEnablerAttr?
  3531.      Returns information about the Apple Guide Enabler?
  3532.  
  3533.      enum {
  3534.      #define gestaltAppleGuideEnablerAttr? 'ag_e'
  3535.      gestaltAppleGuideEnablerPresent? = 0};
  3536.  
  3537. AgVU (Agent VU ext [2.0?], part of Virtual User)
  3538. aint (System? [7.1.1?])
  3539.  
  3540.      NOTES:
  3541.      Returns 2 on a C660AV and Q840AV.
  3542.  
  3543.      This selector may be installed but returns gestaltUnknownErr instead
  3544.      of zero. (Rene Ros)
  3545.  
  3546. apml (PowerTalk Manager ext [1.0?], part of PowerTalk)
  3547.      Bit 0 and 31 set.
  3548.  
  3549. asps (AppleShare Print Server appl [3.0])
  3550.      gestaltASPrintServerAttr?
  3551.  
  3552.      enum {
  3553.      #define gestaltASPrintServerAttr? 'asps'
  3554.      gestaltASPrintServerPresent? = 0};
  3555.  
  3556. AtEa (At Ease Startup [2.0?], part of At Ease for Workgroups)
  3557. ATI  (??? [???])
  3558. ATR  (Type Reunion ext [1.0?] by Adobe Systems Inc.)
  3559. bART (MacCheck app [1.0])
  3560. BaRT (MacCheck app [1.0])
  3561. bast (Launcher cp [1.0?], part of System 7.0.1P and 7.1P)
  3562. batt (Powerbook Duo Enabler [1.0])
  3563.      (System [7.5])
  3564.      (System Enabler 111 [1.0])
  3565.      (System Enabler 121 [1.0])
  3566.      (System Enabler 131 [1.0])
  3567.      (System Enabler 201 [1.0]))
  3568.      Returns information about the PowerBook battery?
  3569.  
  3570.      The debugger name for the routine which returns the response for this
  3571.      selector is called 'GETTIMELEFT'. But in what units? And what time?
  3572.      I've only seen the value 0, 5 or 6 returned. The GDEF calls the Power
  3573.      Manager (_PMgrOp [0xA085 with D0=0x00]) to get the info but I can't
  3574.      find which function. (Rene Ros)
  3575.  
  3576. bclk (System [7.5.2?) INF?
  3577.      gestaltBusClockSpeed?
  3578.      Returns the bus clock speed in Hz.
  3579.  
  3580.      #define gestaltBusClockSpeed? 'bclk'
  3581.  
  3582.      NOTES:
  3583.      Only on Power Macintosh, not on 68K computers?
  3584.  
  3585.      See also 'pclk' in this section.
  3586.  
  3587. brcn (Screen? cp [1.0?] on Color Classic)
  3588. brcN (Energy Saver cp [1.0?], part of Monitor Energy Saver)
  3589. bugx (7.5.2 Printing Fix ext [1.0.2?])
  3590.      (System [7.5])
  3591.      (System Update ext [3.0])
  3592.      gestaltBugFixAttrsThree
  3593.      Returns information about the fixes applied.
  3594.  
  3595.      enum {
  3596.      #define gestaltBugFixAttrsThree 'bugx'
  3597.      gestalt???                      =  0,
  3598.      gestalt???                      =  1,
  3599.      gestalt???                      =  2,
  3600.      gestalt???                      =  3,
  3601.      gestalt???                      =  5,
  3602.      gestalt???                      =  7,
  3603.      gestaltDIXZeroSupportsBadBlocks =  9,  /* &AD29 */
  3604.      gestaltOTPrintingFix?           = 10}; /* OT Printing fix by */
  3605.                                             /*  7.5.2 Printing Fix ext */
  3606.  
  3607.      NOTE:
  3608.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  3609.      selectors to indicate which fixes are installed on a given machine.
  3610.      These are for Apple internal use only, and developers should not rely
  3611.      on these. There is no guarantee that they will be supported in future
  3612.      versions of Macintosh system software. &AT06
  3613.  
  3614. bugy (32-bit System Enabler [1.0])
  3615.      (Hardware System Update ext [1.0])
  3616.      (MIDI Manager ext [2.0.2?])
  3617.      (Network Launch Fix ext [1.0])
  3618.      (Sound Manager ext [3.0])
  3619.      (System? [7.1?])
  3620.      (System enabler 065)
  3621.      gestaltBugFixAttrsTwo?
  3622.      Returns information about the fixes applied.
  3623.  
  3624.      enum {
  3625.      #define gestaltBugFixAttrsTwo?  'bugy'
  3626.      gestaltBugsEgretDispatchPatch? =  0,  /* these correct the */
  3627.      gestaltBugsEgretTimePatch?     =  1,  /*  system clock and */
  3628.                                            /*  modem perf.? */
  3629.      gestalt???                     =  2,  /* unknown, Hardware Upd. */
  3630.      gestaltEgretTickHandlerPatch?  =  3,  /*  see bit 0 & 1 ? */
  3631.      gestalt???                     =  4,  /* unknown, Hardw. Upd. */
  3632.      gestaltSCSIPatch?              =  5,  /* floppy drive fixed ? */
  3633.      gestalt???                     =  6,  /* unknown, Hardw. Upd. */
  3634.      gestalt32bitEnabler?           =  7,  /* 32-bit enabler avail?*/
  3635.      gestalt???                     =  8,  /* unknown, MIDI Mgr */
  3636.      gestalt???                     =  9,  /* unknown, Sound Mgr 3 */
  3637.      gestalt???                     = 11,  /* unknown, Hardw. Upd. */
  3638.      gestalt???                     = 12,  /* unknown, Hardw. Upd. */
  3639.      gestalt???                     = 13,  /* unknown, Hardw. Upd. */
  3640.      gestalt???                     = 14,  /* unknown, Hardw. Upd. */
  3641.      gestalt???                     = 15,  /* unknown, Hardw. Upd. */
  3642.      gestalt???                     = 16,  /* unknown, Hardw. Upd. */
  3643.      gestaltKeyboardPatch?          = 17,  /* corrects Adjustable */
  3644.                                            /*  Kbd 'kbd ' response?*/
  3645.      gestalt???                     = 18,  /* unknown, Hardw. Upd. */
  3646.      gestalt???                     = 19,  /* unknown, ??? */
  3647.      gestalt???                     = 20,  /* unknown, ??? */
  3648.      gestalt???                     = 21,  /* unknown, ??? */
  3649.      gestalt???                     = 24,  /* unknown, ??? */
  3650.      gestalt???                     = 25,  /* unknown, ??? */
  3651.      gestalt???                     = 26,  /* unknown, ??? */
  3652.      gestaltNetworkLaunchFix?       = 27,  /* fix problem with */
  3653.                                            /*  appl. on server */
  3654.                                            /*  launch with 68040 */
  3655.      gestalt???                     = 28,  /* unknown, ??? */
  3656.      gestalt???                     = 31}; /* unknown, ??? */
  3657.  
  3658.      WARNING:
  3659.      These are ALL guesses. Well not entirely, I used the ResEdit CODE
  3660.      Editor to peek into the 32-bit System Enabler, Hardware System update
  3661.      and other software. Please check if I'am right. You should be able to
  3662.      find some of the answers in the INIT resource of the Hardware Update
  3663.      and the names of the PTCH resources in version 1.0 were also useful...
  3664.  
  3665.      NOTE:
  3666.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  3667.      selectors to indicate which fixes are installed on a given machine.
  3668.      These are for Apple internal use only, and developers should not rely
  3669.      on these. There is no guarantee that they will be supported in future
  3670.      versions of Macintosh system software. &AT06
  3671.  
  3672. bugz (System [7.0]/Tune-up ext)
  3673.      gestaltBugFixAttrs(One)?
  3674.      Returns information about the fixes applied.
  3675.  
  3676.      enum {
  3677.      #define gestaltBugFixAttrs(One)? 'bugz'
  3678.      gestaltFixPrinting             =  0,
  3679.      gestaltResponderCrashFix       =  1,
  3680.      gestaltResponderVersionFix     =  2,
  3681.      gestaltPurgeFonts              =  3,
  3682.      gestaltAliasMgrFix             =  4,
  3683.      gestaltSCSIFix                 =  5,
  3684.      gestaltKeyboardFix             =  6,
  3685.      gestaltTrueTypeFix             =  7,
  3686.      gestaltFixedMicroseconds       =  8,
  3687.      gestaltSaveLastSPExtra         =  9,
  3688.      gestaltVMCursorTaskFix         = 10,
  3689.      gestaltDietPatches             = 11,
  3690.      gestaltBackgroundPrintingPatch = 12,
  3691.      gestaltNoPreferredAlertPatch   = 13,
  3692.      gestaltAllocPtrPatch           = 14,
  3693.      gestaltEPPCConnectionTableFix  = 15,
  3694.      gestaltDAHandlerPatch          = 16,
  3695.      gestaltLaunchFix               = 17,
  3696.      gestaltDeathNoticePatches      = 18,
  3697.      gestaltBacklightFix            = 19,
  3698.      gestaltPrintDriverFix          = 20,
  3699.      gestaltPMSegmentTweaks         = 21,
  3700.      gestaltWDEFZeroFix             = 22,
  3701.      gestaltPACKSixFix              = 23,
  3702.      gestaltResolveFileIDRefFix     = 24,
  3703.      gestaltDisappearingFolderFix   = 25,
  3704.      gestaltPowerBookSerialFix      = 26,
  3705.      gestaltPowerBookSleepFix       = 27,
  3706.      gestaltPowerBookFloppyEjectFix = 28,
  3707.      gestaltPowerBookSleepFPUFix    = 29,
  3708.      gestaltPowerBookRestFPUFix     = 30,
  3709.      gestalt???                     = 31};
  3710.  
  3711.      NOTE:
  3712.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  3713.      selectors to indicate which fixes are installed on a given machine.
  3714.      These are for Apple internal use only, and developers should not rely
  3715.      on these. There is no guarantee that they will be supported in future
  3716.      versions of Macintosh system software. &AT06
  3717.  
  3718. cate (Catalogs Extension? ext [???], part of PowerTalk)
  3719.      Bit 0 set.
  3720.  
  3721. CDJR (Apple Menu Options cp [1.0], part of System 7.5)
  3722.      (ExtendedAppleMenu [???] by Chris Derossi)
  3723. cfmg (System [7.1.2 on PowerMac])
  3724.      (CFM68K ext [1.0a1], part of OpenDoc)
  3725. cith (System? [???])
  3726.      Seen under MAE 1.0.
  3727.  
  3728. clbv (PowerTalk ext [1.0?], part of PowerTalk)
  3729.      Bit 0 set.
  3730.  
  3731. cmic (System? [7.5.2?])
  3732.      Returns 1 on a PM 7200/90.
  3733.  
  3734. cnfn (??? [???])
  3735.      Checked for by the PPC Debugger Nub extension and control panel.
  3736.  
  3737. comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
  3738.  
  3739.      NOTES:
  3740.      The name "QuickDraw Font Plus" is translated from Japanese and may be
  3741.      translated differently by Apple Computer, Inc.
  3742.  
  3743.      I think 'comp' stands for 'composite', as the INIT contains patches to
  3744.      the Font Manager needed to handle 'composite font suitcases'.
  3745.      (Marco Piovanelli)
  3746.  
  3747. ctxm (???)
  3748. cuda (System? [7.1.2?], on Performa 630TV)
  3749.      gestaltCudaDispatchMgrAttr?
  3750.      Returns information about the Cuda Dispatch Manager?
  3751.  
  3752.      #define gestaltCudaDispatchMgrAttr? 'cuda'
  3753.  
  3754.      Values found: 0x0002 0025 and 0x0002 0028
  3755.  
  3756. CYP8 (MegaPhone Menu ext [1.0] by Cypress Research Corp.,
  3757.                                part of Apple Telecom)
  3758. ddsk (DropDisk app [1.0b3], formerly Mount'em app by Mike Wise and
  3759.                             Chris Cotton of Apple Computer)
  3760.      Only installed if DropDisk driver is loaded. Looks like the highword
  3761.      contains the version (of driver or application?) as BCD, while the
  3762.      low-word is a mystery.
  3763.  
  3764.      NOTE:
  3765.      See also the 'mtem' selector installed by Mount'em 1.0b1 and 1.0b2.
  3766.  
  3767. detc (???)
  3768. diag (Automated Diagnostics ext [1.0], part of Apple Personal
  3769.                                        Diagnostics 1.0)
  3770. doub (WorldScript II ext [7.2?], part of KanjiTalk7 and
  3771.                                  several language kits)
  3772.      gestaltDoubleByteScriptVersion?
  3773.      Returns the version of WorldScript II as BCD?
  3774.  
  3775.      #define gestaltDoubleByteScriptVersion? 'doub'
  3776.  
  3777.      NOTE:
  3778.      This selector seems to be installed by WorldScript II (the
  3779.      System 7.1 ext needed to handle double-byte scripts like Japanese,
  3780.      Korean and Traditional Chinese). Known returned value is 0x0710.
  3781.      (Marco Piovanelli)
  3782.  
  3783. dude (Powerbook Duo Enabler [1.0])
  3784.      (System [7.5])
  3785.      (System Enabler 111 [1.0])
  3786.      (System Enabler 121 [1.0])
  3787.      (System Enabler 131 [1.0])
  3788.      (System Enabler 201 [1.0]))
  3789. dudi (Powerbook Duo Enabler [1.0])
  3790.      (System [7.5])
  3791.      (System Enabler 111 [1.0])
  3792.      (System Enabler 121 [1.0])
  3793.      (System Enabler 131 [1.0])
  3794.      (System Enabler 201 [1.0]))
  3795. EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
  3796.      gestaltExtensionsManager?
  3797.      Selector only indicates presence of the Extensions Manager software?
  3798.      (Anthony DeRobertis)
  3799.  
  3800.      #define gestaltExtensionsManagerExists? 'EM20'
  3801.  
  3802.      NOTE:
  3803.      Not installed by version 3.0 which is part of System 7.5?
  3804.  
  3805. fdbk (Speech Setup cp? [???], part of PlainTalk)
  3806. fdrs (Finder [7.1.1?])
  3807.      Installed by Finder extension?
  3808.  
  3809. fnda (Finder [7.1.1])
  3810.      NOTE: The a is actually the option-a character (0x8C).
  3811.  
  3812. fnd& (Finder?, System? [7.1.2 on PowerMac?])
  3813.      NOTE: The & is actually the option-shift-a character (0xE5).
  3814.  
  3815. fnd* (Finder [7.1.1])
  3816.      NOTE: The * is actually the shift-6 character (0xF6).
  3817.  
  3818. fnd? (Finder [7.1.1?])
  3819.      Installed by Finder extension?
  3820.  
  3821. fndc (Finder [7.1.1])
  3822. fndf (Find File Extension ext [1.1.1], part of System 7.5 Update 1.0)
  3823.      Returns the type of software extending the find capabilities of the
  3824.      Finder? If the selector isn't installed the find capabilities are
  3825.      not extended or an older version of Find File is installed?
  3826.      The response is 'fndf' if Find File is installed. (Rene Ros)
  3827.  
  3828. fndn (Finder?, System? [7.1.2 on PowerMac?])
  3829.      NOTE: The n is actually an option-n, n (0x96).
  3830.  
  3831. FNDR (Finder [7.1.1?])
  3832.      Installed by Finder extension?
  3833.  
  3834. fndv (Finder? [???], part of System 7.5.2)
  3835. fndx (AliasDragger ext [1.0b1] by Leonard Rosenthol)
  3836.      (ControlDragEnabler ext [1.0] by Anthonis DeRobertis)
  3837.      (Finder Enabler [1.0] by Marco Piovanelli)
  3838.      gestaltFinderFeaturesAttr?
  3839.      By installing this selector some undocumented features of the Finder
  3840.      (starting with System 7.1 Pro) are enabled.
  3841.  
  3842.      enum {
  3843.      #define gestaltFinderFeaturesAttr? 'fndx'
  3844.      gestaltFinderControlDrag?    = 0,  /* if set, control dragging an */
  3845.                                         /*  item creates an alias */
  3846.      gestaltFinderRevealOriginal? = 1}; /* if set, Reveal Original menu */
  3847.                                         /*  item is added */
  3848.  
  3849.      NOTES:
  3850.      The x is actually an option-x (0xC5).
  3851.  
  3852.      Apperantly the Finder team implemented several features not approved
  3853.      by the 'high command'. Under normal circumstances these features are
  3854.      not available, unless the correct bit is set with the response of
  3855.      this selector. There are probably more bits defined, or already
  3856.      obsolete because the feature got implemented with later versions of
  3857.      the Finder. (Anonymous)
  3858.  
  3859.      Setting bit 1 causes a new menu item to be added to the Finder's File
  3860.      menu, just below "Find Again". The new item is "Reveal Original" and
  3861.      it instantly resolves alias files! (Marco Piovanelli)
  3862.  
  3863. futr (ThreadsINIT ext [2.0?], part of Threads Package)
  3864. fstn (System? [7.5.2?])
  3865.      Returns 1 on a PB 5300.
  3866.  
  3867. gacc (System? [7.5.2?])
  3868. gFax (Fax Extension ext [1.1?], part of Express Modem Software)
  3869. gntz (System [7.1.2 on PowerMac])
  3870. gpad (General Controls cp [7.5])
  3871.      gestaltGeneralControlsAddr?
  3872.      Returns the address to the long value returned by the 'gprf'
  3873.      selector to change that value. (Jon Pugh)
  3874.  
  3875.      #define gestaltGeneralControlsAddr? 'gpad'
  3876.  
  3877. gprf (General Controls cp [7.5])
  3878.      gestaltGeneralControlsAttr?
  3879.      Returns information about the settings made in the General Controls
  3880.      control panel.
  3881.  
  3882.      enum {
  3883.      #define gestaltGeneralControlsAttr? 'gprf'
  3884.      gestaltControlGoDocuments?  = 0,  /* go to Documents folder */
  3885.      gestaltControlGoLast?       = 1,  /* go to last used folder */
  3886.      gestaltControlProtectSystem?= 2,  /* Protect System folder */
  3887.      gestaltControlHideDesktop?  = 3,  /* Hide desktop */
  3888.      gestaltControlLauncher?     = 4,  /* Display Launcher on startup */
  3889.      gestaltControlWarnShutdown? = 5}; /* Warn on incorrect shutdown */
  3890.  
  3891. HAM  (Apple Menu Options cp [1.0], part of System 7.5)
  3892.      (HAM ??? [???] by Inline Design)
  3893. harp (PowerBook cp? [7.2?])
  3894. hcsl (Finder [7.1.1?])
  3895. heap (System [7.1.2 on PowerMac])
  3896.      Bits 1 and 5 set.
  3897.  
  3898. hgfd (AppleShare File Server appl [3.0])
  3899.      gestaltASFileServerAttr?
  3900.  
  3901.      enum {
  3902.      #define gestaltASFileServerAttr? 'hgfd'
  3903.      gestaltASFileServerPresent? = 0};
  3904.  
  3905. hrad (??? [???] on PowerBook 540c with System 7.5 Update 2.0 Seed 6)
  3906. |     Returns (OSType) 'Appl', same as 'srad'? (Anonymous)
  3907.  
  3908. HrIt (HearIt cp [1.0])
  3909. iadj (System? [7.1.2?] with PowerTalk?)
  3910.      (Display Enabler ext, Icon relocation INIT ID#3 [1.0])
  3911. idsp (System? [7.1?] on Macs with sound input?)
  3912.      Values found: 0xFFFF FFFF, 0x000C, 0x0000
  3913.  
  3914. immg (??? [???] on PowerBook 520/540? and Performa 630TV)
  3915.      Value found: 0x0100 0000. Version?
  3916.  
  3917. intD (??? [???])
  3918.  
  3919.      NOTE:
  3920.      This is a mystery selector.  It isn't installed by any software, as
  3921.      far as I know, but the Finder 7.1 checks for this selector in certain
  3922.      situations. (Marco Piovanelli)
  3923.  
  3924. irhk (IRTalk ext [1.2?])
  3925.      ???
  3926.  
  3927.      NOTE:
  3928.      Returns gestaltUnknownErr (-5550) when the extension is installed on
  3929.      a Macintosh without Infra-Red capable hardware. Or when IR software
  3930.      is disabled (AppleTalk off?). (Rene Ros)
  3931.  
  3932. jkbd (??? (Japanese!) ext [1.0], part of KanjiTalk)
  3933. lang (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
  3934.                                    several language kits)
  3935.      gestaltLanguageMgrAttr
  3936.      Returns information about the Language Manager?
  3937.  
  3938.      enum {
  3939.      #define gestaltLanguageMgrAttr 'lang'
  3940.      gestaltLanguageMgr???  = 0};
  3941.  
  3942. LASB (LaserWriter Bridge cp [2.0?], part of Network Software Installer 1.5)
  3943.      gestaltLaserWriterBridgeAddr?
  3944.  
  3945.      #define gestaltLaserWriterBridgeAddr? 'LASB'
  3946.  
  3947. ldap (???)
  3948. lngb (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
  3949.                                    several language kits)
  3950.      Value found: 0x00001FFF.
  3951.  
  3952. lstk (Speech Setup cp? [???], part of PlainTalk)
  3953. ltma (Link Tool Manager ext [2.0?], part of Apple Remote Access 2.0)
  3954.      gestaltLinkToolVersion?
  3955.      Returns the version of the Link Tool Manager as NumVersion?
  3956.  
  3957.      #define gestaltLinkToolVersion? 'ltma'
  3958.  
  3959.      NOTE:
  3960.      The only value I've seen returned was 0x02002008, which would mean
  3961.      '2.0d8' which was not correct since the 'vers' recource said '2.0f0'.
  3962.      The value is hardcoded in the .LTM Driver resource. (Rene Ros)
  3963.  
  3964. mash (System [7.1P?]/At Ease [1.0?])
  3965.  
  3966.      NOTE:
  3967.      The Starter cp (part of System 7.1P) and Launcher cp (part of
  3968.      System 7.5) both contain a 'mash' resource and includes a template for
  3969.      it. Can this be the same data-structure? (Rene Ros)
  3970.  
  3971. mbox (Mailbox Extension? ext [???], part of PowerTalk?)
  3972.      gestaltMailboxVersion?
  3973.      Returns version of Mailbox software as INTEGER.
  3974.  
  3975.      #define gestaltMailboxVersion? 'mbox'
  3976.  
  3977. MClk (Date & Time cp [7.5], part of System 7.5)
  3978.      (SuperClock! cp [4.0] by Steve Christensen)
  3979. mfdr (At Ease [1.0])
  3980. mjik (MenuMagic ext [1.0], part of System 7.1 Pro and 7.5)
  3981. mtem (Mount'em app [1.0b1-1.0b2] by Mike Wise and Chris Cotton of
  3982.                                     Apple Computer)
  3983.      See the 'ddsk' selector installed by DropDisk 1.0b3 and later.
  3984.  
  3985. mtv! (TV Setup cp [1.0], part of System for Macintosh TV?)
  3986.  
  3987.      NOTE:
  3988.      Not seen installed, disassembled control panel, meaning unknown.
  3989.      It's probably an address. (Rene Ros)
  3990.  
  3991. Norm (68K DebugServicesINIT ext [2.0?])
  3992.      Pointer to callback function?
  3993.  
  3994. NubA (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  3995. NubD (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  3996. NubH (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  3997. NubV (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  3998. octb (System? [7.5?] on PowerBook 520/540?)
  3999. ot   (??? [???])
  4000.      gestaltOpenTransportAttr?
  4001.      Returns information about the Open Transport software?
  4002.  
  4003.      enum {
  4004.      #define gestaltOpenTransportAttr? 'ot  '
  4005.      gestaltOpenTransportPresent? = 0};
  4006.  
  4007.      NOTE:
  4008.      Defined with early test-versions of Open Transport? Never seen
  4009.      installed. See the 'otan' selector.
  4010.  
  4011. otvr (Open Transport ??? [1.1?])
  4012.      gestaltOpenTransportVersion?
  4013.      Returns the version of Open Transport as ???. (Anonymous)
  4014.  
  4015.      #define gestaltOpenTransportVersion? 'otvr'
  4016.  
  4017. pclk (System [7.5.2]) INF?
  4018.      gestaltCPUClockSpeed?
  4019.      Returns the processor clock speed in Hz.
  4020.  
  4021.      #define gestaltCPUClockSpeed? 'pclk'
  4022.  
  4023.      NOTES:
  4024.      Only on Power Macintosh, not on 68K computers?
  4025.  
  4026.      See also 'bclk' in this section.
  4027.  
  4028. PhoN (PowerBook Setup cp [7.3.1?], PhoneINIT INIT resource)
  4029. port (Powerbook Duo Enabler [1.0])
  4030.      (System [7.5])
  4031.      (System Enabler 111 [1.0])
  4032.      (System Enabler 121 [1.0])
  4033.      (System Enabler 131 [1.0])
  4034.      (System Enabler 201 [1.0])
  4035.      gestaltPortAttr?
  4036.      Returns information about the ports?
  4037.  
  4038.      enum {
  4039.      #define gestaltPortAttr? 'port'
  4040.      gestaltHasInternalModem?   = 0?,
  4041.      gestaltHasExternalPrinter? = 1?,
  4042.      gestaltHasExternalModem?   = 2?};
  4043.  
  4044.      NOTE:
  4045.      System Enabler 201 and PowerBook Duo enabler contain an GDEF resource
  4046.      which indicates bits 0, 1 and 2 can be set. (Rene Ros)
  4047.  
  4048. ppad (Performa cp [1.1], part of System 7.1P)
  4049. ppcv (System? [???])
  4050.      gestaltPPCVersionAttr &AS16
  4051.      Returns the version of the PPC Toolbox? Or attribute bits?
  4052.  
  4053.      #define gestaltPPCVersionAttr 'ppcv'
  4054.  
  4055. pprf (Performa cp [1.1], part of System 7.1P)
  4056. ptlk (Speech Setup cp? [???], part of PlainTalk)
  4057. puir (IRTalk ext [1.2?])
  4058.      gestaltInfraRedManager?
  4059.      Returns the version of the manager for Infrared transmission? as BCD?
  4060.  
  4061.      #define gestaltInfraRedManager? 'puir'
  4062.  
  4063.      NOTE:
  4064.      Seen on PB 190cs prototype (0x0100) and PB 5300 (0x0200300). On a
  4065.      released PB 5300c it returns 0x01000200.
  4066.      (Anonymous, Rene Ros)
  4067.  
  4068. pwtr (PowerTracer cp [1.0a2NoOpt?])
  4069. pxtn (Desktop Printer Extension? ext [1.0])
  4070.      (QuickDraw GX? ext? [???])
  4071.      ???
  4072.      Returns the version of the ??? as NumVersion.
  4073.  
  4074.      NOTE:
  4075.      The Desktop Printer Extension included with LaserWriter 8.3 (version
  4076.      '1.0f1c2 (nodebug)') contains a resource of type 'GFUN' which looks
  4077.      very much like a selector function. The code in it checks for 'pxtn'
  4078.      and tries to return a version number. But the code 'pxtn' is never
  4079.      installed as a selector!? (Rene Ros)
  4080.  
  4081. Remt (AutoRemounter cp [???])
  4082. rmbg (System? [7.5.2?])
  4083.      Bits 0 and 1 set.
  4084.  
  4085. scrf (WorldScript Power Adapter ext? [7.5?])
  4086. serh (System? [7.1.2?])
  4087.      gestaltSerialHardware?
  4088.      Returns type of hardware used for serial I/O?
  4089.  
  4090.      enum {
  4091.      #define gestaltSerialHardware? 'serh' /* Serial Hardware */
  4092.      gestaltClassicSer? = 'Clas',  /* returned on PM 8100/80 */
  4093.      gestalt???         = 'TntS'}; /* returned on PM 7200, */
  4094.                                    /* PM 8500 and PM 9500 */
  4095.                                    /* with System 7.5.2 */
  4096.  
  4097. shal (SerialDMA ext [2.0.2?] part of 7.5.2 Printing Update [1.1])
  4098.      (System [7.1?])
  4099.      gestaltSerialHAL?
  4100.  
  4101.      #define gestaltSerialHAL? 'shal'
  4102.  
  4103.      NOTE:
  4104.      Returns 1 (Centris 660AV) and 2 (PowerMacs). The SerialDMA extension
  4105.      possibly also installs value 3.
  4106.  
  4107.      This selector may be installed but returns gestaltUnknownErr instead
  4108.      of zero. (Rene Ros)
  4109.  
  4110. slnk (MNPLinkTool? [1.0], part of Apple Remote Access)
  4111. sndx (Sound Manager ext [3.0]?)
  4112.      gestaltSoundMgrAttr?
  4113.  
  4114.      enum {
  4115.      #define gestaltSoundMgrAttr? 'sndx'
  4116.      gestaltSoundMgrPresent? = 0?};
  4117.  
  4118. SNKR (StyleWriter 1200 ext ? [1.0?])
  4119. srad (??? [???] on PowerBook 540c with System 7.5 Update 2.0 Seed 6)
  4120.      Returns (OSType) 'Appl', same as 'hrad'? (Anonymous)
  4121.  
  4122. sysu (System Update enbl [7.5 upd 2.0s3]) INF?
  4123.      gestaltSystemUpdateVersion?
  4124.      Returns the version number of the System Update enabler as BCD.
  4125.  
  4126.      #define gestaltSystemUpdateVersion? 'sysu'
  4127.  
  4128.      NOTE:
  4129.      Appears to been dropped with Update 2.0 Seed 8, probably because the
  4130.      update is now a full System 7.5.3 upgrade. (Anonymous)
  4131.  
  4132. thng (ThreadsINIT ext [2.0?], part of Threads Package)
  4133. thrd (ThreadsINIT ext [2.0?], part of Threads Package)
  4134. udsk (System [7.1.2 on PowerMac])
  4135. udsv (System [7.1.2 on PowerMac])
  4136. valk (System? [7.5.1? on Power Mac 5200)
  4137.      Bit 0 set.
  4138.  
  4139. vdrc (PC Exchange? cp [1.0?])
  4140. vmbs (System [7.0])
  4141.      gestaltVMBackingStoreRef?
  4142.      Returns the file reference number of the Virtual Memory storage file
  4143.      if VM is present.
  4144.  
  4145.      #define gestaltVMBackingStoreRef? 'vmbs'
  4146.  
  4147. vmcl (System, VM on [7.0])
  4148. vmem (RAM Doubler [1.0] by Connectix Corporation)
  4149.      gestaltVMExtensionMgr?
  4150.      Returns type of software used to extend the Virtual Memory Mgr?
  4151.  
  4152.      #define gestaltVMExtensionMgr? 'vmem'
  4153.      #define gestaltRAMDoubler? 'RaM2'
  4154.  
  4155.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  4156.  
  4157. wnkl (System? [7.5.2?])
  4158.  
  4159. Third Parties Software
  4160. ----------------------
  4161. *DC* (DepthCharge cp [???] by Maf Vosburgh)
  4162. 5mat (???)
  4163. Aarn (Aaron ext [1.0] by Greg Landweber)
  4164.      NOTE: See also 'Aarp', 'Aaru' and 'Copl' in this section.
  4165.  
  4166. Aarp (Aaron ext [1.0] by Greg Landweber)
  4167.      NOTE: See also 'Aarn', 'Aaru' and 'Copl' in this section.
  4168.  
  4169. Aaru (Aaron ext [1.0] by Greg Landweber)
  4170.      NOTE: See also 'Aarn', 'Aarp' and 'Copl' in this section.
  4171.  
  4172. AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
  4173. AcPC (AccessPC cp [3.0?] by Insignia Solutions)
  4174.      Version 3.0 always returns 0x8765 4321.
  4175.  
  4176. ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4177. ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4178.  
  4179.      NOTE:
  4180.      Not installed by AfterDark but the GDEF indicates it is able to return
  4181.      a response.
  4182.  
  4183. ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4184.  
  4185.      NOTE:
  4186.      Not installed by AfterDark but the GDEF indicates it is able to return
  4187.      a response.
  4188.  
  4189. ADR2 (DDExpand appl [3.7.7?] by Symantec Corp.)
  4190.      Returns an pointer to a parameter block with unknown structure. Offset
  4191.      0x0C seems to be a pointer to code. (Anonymous 'Fig')
  4192.  
  4193.      NOTE:
  4194.      Installed by a special version of the software instead of the 'ADRC'
  4195.      selector. Perhaps a special version with limited distribution to
  4196.      software vendors for working with the Autodoubler Internal (resource)
  4197.      Compressor. (Anonymous 'Fig')
  4198.  
  4199.      See also 'ADRC'.
  4200.  
  4201. ADRC (DDExpand appl [3.7.7?] by Symantec Corp.)
  4202.      Returns an pointer to a parameter block with unknown structure. Offset
  4203.      0x0C seems to be a pointer to code. (Anonymous 'Fig')
  4204.  
  4205.      NOTE: See also 'ADR2'.
  4206.  
  4207. ADTK (Talk*Control cp [???] by 2Way Computing, Inc.)
  4208. AP00..AP06
  4209.      (RapidLock cp, RapidTrak cp or drivers? [1.1], part of RapidTrak
  4210.       software by Insignia Solutions Inc.)
  4211.      It seems these selectors are installed for each harddisk connected to
  4212.      your Macintosh. The last two bytes of the selector is the SCSI ID.
  4213.  
  4214. AP17 (AccessPC cp [2.0?] by Insignia Solutions)
  4215. ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
  4216. ASTN (Asante EN/SC ext [???] by Asante Technologies, Inc.)
  4217. aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4218. AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
  4219. A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
  4220. Bars (Virtual Desktop Extension ext [1.8?], part of Virtual Desktop
  4221.                                             by AWOL Software, Ross Brown)
  4222. Blad (Blood cp [1.0.1?] by Alessandro Levi Montalcini)
  4223.      NOTES:
  4224.      The B is actually the option-s character (0xA7).
  4225.      The d is actually the option-d character (0xB6).
  4226.  
  4227. bMRN (Super Boomerang cp [4.0?], part of Now Utilities by Now Software)
  4228. cc20 (???)
  4229.      NOTE: The 'cc' are actually option-c (0x8D).
  4230.  
  4231. CDFL (???)
  4232. CDmn (CDMenu cp [1.0?] by Henrik Eliasson)
  4233. CDUf (CDU cp [1.0?] by Connectix Corp.)
  4234. CDUt (CDU cp [1.0?] by Connectix Corp.)
  4235. cGnF (CommuniGate Notifier ext [1.0] by Stalker Software, Inc.)
  4236. CiCN (Color ICON Mania cp [1.0] by Yosuke Suzuki)
  4237. cLib (???)
  4238. Copl (Aaron ext [1.0] by Greg Landweber)
  4239.      NOTE: See also 'Aarn', 'Aarp' and 'Aaru' in this section.
  4240.  
  4241. CPPf (Power To Go cp [2.0?] by AlSoft, Inc.)
  4242. Cut! (Desktop Shortcut cp [1.0], part of Aladdin Desktop Tools
  4243.                                  by Aladdin Systems
  4244. DanS (PowerClick cp [1.0] by Daniel A. Segel)
  4245. Day* (PowerCentral cp [1.3?] by DayStar Digital, Inc.)
  4246.      Returns 0xFFFF FFFF when no card is installed?
  4247.  
  4248.      NOTE: The * is actually the option-8 character (0xA5).
  4249.  
  4250. Dbug (???)
  4251. DCDt (NoDesktopCleanup cp [1.0?] by Alessandro Levi Montalcini)
  4252. DCKc (Keys! cp [1.0] by Stefan Kurth)
  4253.      NOTE: The lowercase c is actually the control-q (Command key sign)
  4254.      character (0x11).
  4255.  
  4256. DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
  4257. DDAD (AutoDoubler cp [1.0?] by Symantec Corp.)
  4258.  
  4259.      NOTE: See also 'DDAE' and 'DDNF'
  4260.  
  4261. DDAE (AutoDoubler cp [1.0?] by Symantec Corp.)
  4262.  
  4263.      NOTES:
  4264.      Installed by a special version of the software instead of the 'DDAD'
  4265.      selector. Perhaps a special version with limited distribution to
  4266.      software vendors for working with the Autodoubler Internal (resource)
  4267.      Compressor. (Anonymous 'Fig')
  4268.  
  4269.      See also 'DDAD' and 'DDNF'.
  4270.  
  4271. DDCD (CopyDoubler cp [2.0.4?] by Symantec Corp.)
  4272. DDJB (???)
  4273. DDNF (AutoDoubler cp [1.0?] by Symantec Corp.)
  4274.  
  4275.      NOTE: See also 'DDAD' and 'DDAE'.
  4276.  
  4277. DFlh (DiskFlash cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  4278. DlgV (Dialog View cp [2.11], formerly List Font cp by James W. Walker)
  4279.      See also 'LFnt'.
  4280.  
  4281. DPin (Screen Posters ext [3.0?] by Berkley Systems)
  4282. Dpth (DepthMaster cp [1.0] by Victor Tan)
  4283. DBPR (DATEBOOK PRO Extension ext [2.0.1?] by Aldus Corporation, now Adobe)
  4284.      Returns data about the current reminder? GDEF is called with 'SvA4'
  4285.      selector to initialize data inside the GDEF. (Rene Ros)
  4286.  
  4287. DWG! (Volume Menu cp [1.0] by David Gladstone, Chris Burns, Julian Harris)
  4288. EDCN (PPPReport cp [1.0b3?] by Eric de la Musse)
  4289. EgGP (Eagle ext [1.5?] part of Apollo [1.2?] by Jeremy Roussak)
  4290. ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
  4291. ESOC (Serial of Champions ext [???] by Mike Throckmorton)
  4292. Extn (Now Startup Manager cp [4.0?], part of Now Utilities by Now Software)
  4293. FCDV (RAMGauge cp [1.3?] by Syzygy Cult.)
  4294.  
  4295.      NOTE: The C is actually the option-shift-c character (0x82).
  4296.  
  4297. ffEx (???)
  4298. Fie  (Icon7 ext [???] by Inline Designs)
  4299.      gestaltIcon7?
  4300.  
  4301. fPth (FinderPaths cp? [???])
  4302.  
  4303.      NOTE: The f is actually the option-f character (0xC4).
  4304.  
  4305. fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
  4306.       package)
  4307. FMnu (Now FolderMenus cp [5.0.1], part of Now Utilities by Now Software)
  4308. FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
  4309. FUWi (OutTheWindow! ext [1.0] by Olivier Lebra)
  4310. FW14 (FileWave Administrator ext [2.0?], part of FileWave 2.0
  4311.       by Wave Research)
  4312. FWCP (File Tracker Controls cp [1.0] by Mark Aiken)
  4313. fWmM (Super Boomerang cp [4.0?], part of Now Utilities by Now Software)
  4314. GrEG (Greg's Buttons ext [3.1.4?] by Greg Landweber)
  4315. GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  4316. gV00 (PowerPort cp? [???])
  4317. gV01 (PowerPort cp? [???])
  4318. gV02 (PowerPort cp? [???])
  4319. gV03 (PowerPort cp? [???])
  4320. gV04 (PowerPort cp? [???])
  4321. gV05 (PowerPort cp? [???])
  4322. gV06 (PowerPort cp? [???])
  4323. gV07 (PowerPort cp? [???])
  4324. gV08 (PowerPort cp? [???])
  4325. gV09 (PowerPort cp? [???])
  4326. gV0A (PowerPort cp? [???])
  4327. gVDI (PowerPort cp? [???])
  4328. GVfd (???)
  4329. GVms (???)
  4330. GVso (Global Village Toolbox ext [2.1.4?] by Global Village Communication)
  4331. GVsp (Global Village Toolbox ext [2.1.4?] by Global Village Communication)
  4332. He20 (Helium cp [1.0?] by Robert L. Mathews)
  4333. HEID (Incognito cp [1.0?] by Manuel Veloso)
  4334. HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
  4335.      GDEF always returns value 1.
  4336. HPKb (??? external to MacSLIP [???] by Hyde Park Software)
  4337. HtLk (Reference Link ext [1.0] by James W. Walker)
  4338. IACi (QuicKeys Toolbox ext [???] by ???)
  4339. iHnd (Invisible Hand cp [1.0] by Carl Mauer)
  4340.  
  4341.      NOTE:
  4342.      Because this cp patches the _Random trap you can use this selector to
  4343.      determine its presence and refuse to continue.
  4344.  
  4345. in++ (Inline++TSM cp [2.0?] by Hideaki Iimori)
  4346.      The response is an address to a private (??? -- some fields look like
  4347.      they may be public, but the docs are in Japanese) parameter block.
  4348.      (Marco Piovanelli)
  4349.  
  4350. Info (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools
  4351.                                    by Aladdin Systems)
  4352. Intj (Interjection ext [???])
  4353. JAiN (Rival cp by Inline Designs)
  4354.      gestaltRival
  4355.  
  4356.      NOTE: The i is actually the option-u/i character (0x95).
  4357.  
  4358. jbxC (???)
  4359. jGnE (PageUp/Down ext [n/a] by ???)
  4360. jsm1 (???)
  4361. JXNM (NowMenus cp [4.0?], part of Now Utilities by Now Software)
  4362. KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
  4363. KBCM (Menu Choice cp [???] by Kerry Clendinning)
  4364. kPow (???)
  4365. KQae (KQ Apple Events ext [???], part of KeyQuencer
  4366.                                  by Alessandro Levi Montalcini)
  4367. KQue (KeyQuencer cp [???], part of KeyQuencer
  4368.                            by Alessandro Levi Montalcini)
  4369. LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
  4370.      See also 'DlgV'.
  4371.  
  4372. LLSM (SAM Intercept ext [4.0?] by Symantec?)
  4373.  
  4374.      NOTE:
  4375.      Version 4.0 of SAM from Symantec had an improperly implemented Gestalt 
  4376.      function which would cause a bus error if called. SAM 4.0 *must* be 
  4377.      removed (not turned off) or upgraded to at least version 4.0.1 which 
  4378.      was supposed to fix this problem. (Paul Cunningham, Teknosys, Inc.)
  4379.  
  4380. LNCH (Talk*Control cp [???] by 2Way Computing, Inc.)
  4381. LxRZ (Retro.SCSI? ext [2.0?], part of Retrospect by Dantz Development
  4382.       Corporation)
  4383.      (Remote? cp [2.0?], part of Retrospect by Dantz Development
  4384.       Corporation)
  4385. MAX` (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4386.                                       by Visioneer, Inc.)
  4387.      Returns pointer to private data?
  4388.  
  4389. MAX~ (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4390.                                       by Visioneer, Inc.)
  4391.      Returns information about the PaperPort software? Attribute bits?
  4392.  
  4393. MFK7 (Super Saver cp [1.1.2?] by Michael F. Kamprath)
  4394. Mgc! (Wizard INIT ext [1.0], part of Disk Wizard by Francois Pottier)
  4395. MJC& (AutoMenus II cp [???] by Michael Conrad)
  4396. MV10 (TearOFF cp [???] by Bad Boys' Software)
  4397. MV20 (Speed Access ext [1.0?] by Connectix Corporation)
  4398. nOAg (??? cp [1.2?], part of netOctopus by Pole Position)
  4399. nOAv (??? cp [1.2?], part of netOctopus by Pole Position)
  4400.      Returns version as NumVersion?
  4401.  
  4402. NCex (Now QuickFiler Extension ext [5.0.1], part of Now Utilities
  4403.                                             by Now Software)
  4404. NGst (NokNok cp [1.0?])
  4405. NkNk (NokNok cp [1.0?])
  4406. NTFY (TeamNotify ext [2.0?] by Team Coordination Software Inc.)
  4407. NowT (Now Toolbox ext [4.0?], part of Now Utilities by Now Software)
  4408. NWin (Now Startup Manager cp [5.0.1], part of Now Utilities
  4409.                                       by Now Software)
  4410. OLE2 (Microsoft OLE Extension ext [2.0.6?] by Microsoft Corporation)
  4411. Pax! (PaperPort cp [2.0?], part of Visioneer PaperPort by Visioneer, Inc.)
  4412. PAXC (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4413.                                       by Visioneer, Inc.)
  4414.      Has something to do with compression?
  4415.  
  4416. PBUf (???)
  4417. PBUt (CDU cp [1.0?] by Connectix Corp.)
  4418. PopF (PopupFolder cp [???] by Inline Software)
  4419. PRT+ (PrintAid [0.9?] by James W. Walker)
  4420. PtrP (PrintPatrol [1.0] by Randy DeRuiter and John Champion)
  4421. QRef (QuickRef ext? [1.0] by Scott Bronson)
  4422. QCam (QuickCamVideo ext [1.0] by Connectix Corporation)
  4423.      (QuickCamMic ext [1.0] by Connectix Corporation)
  4424. QIC! (???)
  4425. Rem* (???)
  4426. ReSp (File Tracker Controls cp [1.0] by Mark Aiken)
  4427. RO40 (??? [???] by ???)
  4428.      DiskCopy 6.0 checks for this selector.
  4429.  
  4430.      NOTE: Selector is (OSType) 0x5285 3430.
  4431.  
  4432. RQDC (DropCheck cp [???] by Ronald B. Queloz)
  4433. SCTR (FaxMonitor ext [1.6?], part of FAXcilitate by PSI)
  4434. SDIT (???)
  4435. SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
  4436.       ALSoft, Inc.)
  4437. SFun (SF Windows [1.0] by Damon Cokenias)
  4438. SFwd (Open-wide cp [3.0?] by James W. Walker)
  4439. SLi2 (StuffIt SpaceSaver? ext [???] by Aladdin Systems, Inc.)
  4440. SLIP (???)
  4441. sMon (StuffIt SpaceSaver? ext [???] by Aladdin Systems, Inc.)
  4442. SNIT (Snitch ext [1.0] by Mitch Jones)
  4443. SPLO (SpigotVDIG ext [1.0] by SuperMac Technology)
  4444. ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
  4445. STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
  4446. TapT (TappyType cp [2.0?] by Colin Klipsch)
  4447. TgrX (Xmas Lights cp [1.0] by Tiger Technologies)
  4448. Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
  4449. TRNS (Transporter ext [???], part of SAM administrator)
  4450.  
  4451.      NOTE:
  4452.      Not sure why, but calling this selector has caused many wierd
  4453.      interface problems with our application, such as scrollbars
  4454.      disappearing, and menus disabling. (Paul Cunningham, Teknosys, Inc.)
  4455.  
  4456. TSM+ (TSM Fix ext [1.0] by Matt Slot)
  4457. tsmH (TSMHelper ext [???]) by Donald Brown, CE Software)
  4458. UhOh (SpeedyFinder7 Extension ext [1.5.9h], part of SpeedyFinder7
  4459.                                             by Victor Tan)
  4460. UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by
  4461.       Keisuke Hara)
  4462.      See also FtCg selector.
  4463.  
  4464. URL! (CyberFinder cp [2.0] by Leonard Rosenthol and Victor Tan)
  4465. URLf (CyberFinder cp [MacHack 1995 release to 1.1] by Leonard Rosenthol
  4466.                                                    and Victor Tan)
  4467.  
  4468.      NOTE:
  4469.      CyberFinder 2.0 installs the selector 'URL!'.
  4470.  
  4471.      The f is actually the option-f character (0xC4).
  4472.  
  4473. View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
  4474.      gestaltViewerEngine
  4475.      The gestalt selector is not installed until someone (StuffIt) invokes
  4476.      the engine.
  4477.  
  4478. vmFn (RAM Doubler [1.0] by Connectix Corporation)
  4479.      Seems to return a memory address, perhaps to a function to control
  4480.      Virtual Memory?
  4481.  
  4482.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  4483.  
  4484. VrkG (Virex cp? [5.5?] by Datawatch Corp.)
  4485. VrkS (Virex cp? [5.5?] by Datawatch Corp.)
  4486.  
  4487.      NOTE:
  4488.      Merely calling the 'VrkS' selector seems to trigger a quick scan
  4489.      feature of Virex, which is only supposed to be accessible by a hot key
  4490.      setup by the Virex control panel (or something like that). When this
  4491.      happens, a dialog is displayed asking the user to select a volume or
  4492.      folder to scan. (Paul Cunningham, Teknosys, Inc.)
  4493.  
  4494. VrkU (Virex cp? [5.5?] by Datawatch Corp.)
  4495. WARE (???)
  4496. WREO (Replace Existing Options cp [???] by Jonathon Summers)
  4497.  
  4498.      NOTE: The W is actually the option-w character (0xB7).
  4499.  
  4500. Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
  4501.  
  4502.      NOTE: The W is actually the option-w character (0xB7).
  4503.  
  4504. XAsm (???)
  4505. xMe0 (OptiMem cp [2.0?] by Jump Dev. Group Inc.)
  4506.  
  4507.      NOTE: The 0 is a zero (0x30).
  4508.  
  4509. YaHu (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools
  4510.                                    by Aladdin Systems)
  4511. YAWN (Sleeper cp [1.1.4?] by St.Clair Software)
  4512. ygS  (???)
  4513.  
  4514.      NOTES:
  4515.      The y is actually option-u/y (0xD8).
  4516.      The last byte is actually the BEL ASCII code (0x07).
  4517.  
  4518. YoHo (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools)
  4519.                                    by Aladdin Systems)
  4520. YuHu (Desktop Makeover cp [1.0], part of Aladdin Desktop Tools)
  4521.                                  by Aladdin Systems)
  4522. *Men (OtherMenu ext [1.0] by James W. Walker)
  4523.  
  4524. Gestalt Manager Calls
  4525. =====================
  4526. All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
  4527. in this chapter.
  4528.  
  4529. Gestalt Manager Routines
  4530. ------------------------
  4531. The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
  4532. listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
  4533. documented.
  4534.  
  4535. FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
  4536.      Available since System 6.0.4.
  4537.      Trap Macro
  4538.        _Gestalt (0xA1AD)
  4539.      Registers on entry   D0: selector code
  4540.      Registers on exit    A0: response
  4541.                           D0: result code
  4542.      Result codes
  4543.        noErr                       0   No error
  4544.        gestaltUnknownErr       -5550   Could not obtain the response
  4545.        gestaltUndefSelectorErr -5551   Undefined selector
  4546.  
  4547. FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
  4548.      Available since System 6.0.4.
  4549.      Trap Macro
  4550.        _NewGestalt (0xA3AD)
  4551.      Registers on entry   A0: address of new selector function
  4552.                           D0: selector code
  4553.      Registers on exit    D0: result code
  4554.      Result codes
  4555.        noErr                       0   No error
  4556.        memFullErr               -108   Ran out of memory
  4557.        gestaltDupSelectorErr   -5552   Selector already exists
  4558.        gestaltLocationErr      -5553   Function not in system heap
  4559.  
  4560. FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
  4561.                          VAR oldGestaltFunction: ProcPtr): OSErr;
  4562.      Available since System 6.0.4.
  4563.      Trap Macro 
  4564.        _ReplaceGestalt (0xA5AD)
  4565.      Registers on entry   A0: address of new selector function
  4566.                           D0: selector code
  4567.      Registers on exit    A0: address of old selector function
  4568.                           D0: result code
  4569.      Result codes
  4570.        noErr                       0   No error
  4571.        gestaltUndefSelectorErr -5551   Undefined selector
  4572.        gestaltLocationErr      -5553   Function not in system heap
  4573.  
  4574. Gestalt Value Routines
  4575. ----------------------
  4576. Please note the GestaltValue routines can be invoked through a library,
  4577. but since System 7.5 the GestaltValue routines are also part of the OS.
  4578. The GestaltValue routines are stack based and don't use registers.
  4579. The GestaltValue library first checks to see if trap 0xABF1 is implemented
  4580. (System 7.5 and later). If trap 0xABF1 is implemented, all calls to the
  4581. library are routed to this trap, otherwise the library uses embedded code.
  4582. Several Apple System selectors use the GestaltValueDispatch A-trap to
  4583. install the response value starting with System 7.5.
  4584.  
  4585. WARNING:
  4586. The GestaltValue library distributed originally checks for the wrong trap
  4587. (_ThreadDispatch, 0xABF2). Make sure your software doesn't crash when this
  4588. trap is installed by the Thread Manager extension.
  4589. (Most info about the GestaltValue functions was provided by
  4590. Marco Piovanelli and Dave Radcliffe).
  4591.  
  4592. FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  4593.      Available as library and since System 7.5.
  4594.      Trap Macro                        Selector
  4595.        _GestaltValueDispatch (0xABF1)  0x0401
  4596.      Result codes
  4597.        noErr                       0   No error
  4598.        unimpErr                   -4   Unimplemented core routine
  4599.        memFullErr               -108   Ran out of memory
  4600.        (and other memory errors)
  4601.        gestaltDupSelectorErr   -5552   Selector already exists
  4602.  
  4603. FUNCTION ReplaceGestaltValue (selector: OSType;
  4604.                               replacementValue: LongInt): OSErr;
  4605.      Available as library and since System 7.5.
  4606.      Trap Macro                        Selector
  4607.        _GestaltValueDispatch (0xABF1)  0x0402
  4608.      Result codes
  4609.        noErr                       0   No error
  4610.        unimpErr                   -4   Unimplemented core routine
  4611.        memFullErr               -108   Ran out of memory
  4612.        (and other memory errors)
  4613.        gestaltUndefSelectorErr -5551   Undefined selector
  4614.  
  4615. FUNCTION DeleteGestaltValue (selector: OSType): OSErr; and
  4616. FUNCTION Delete (selector: OSType): OSErr;
  4617.      Available as library and since System 7.5.
  4618.      Trap Macro                        Selector
  4619.        _GestaltValueDispatch (0xABF1)  0x0203
  4620.      Result codes
  4621.        noErr                       0   No error
  4622.        unimpErr                   -4   Unimplemented core routine
  4623.        gestaltUndefSelectorErr -5551   Undefined selector
  4624.  
  4625. Undocumented Gestalt Manager Routines
  4626. -------------------------------------
  4627. FUNCTION? GestaltDispatch? (???):OSErr;?
  4628.      Trap Macro
  4629.        _GestaltDispatch (0xA0AD)
  4630.      Registers on entry   ???
  4631.      Registers on exit    ???
  4632.      Result codes
  4633.        noErr                       0   No error
  4634.        ???
  4635.  
  4636.      NOTE:
  4637.      Found in the MPW, THINK C and THINK Pascal Traps Interface file
  4638.      on 'Bookmark CD 14'.
  4639.      Available since System 6.0.4 but code will always return error -50
  4640.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  4641.  
  4642. FUNCTION? GetGestaltProcPtr? (selector?: OSType;
  4643.                               var selectorfunction: ProcPtr): OSErr;?
  4644.      Trap Macro
  4645.        _GetGestaltProcPtr (0xA7AD)
  4646.      Registers on entry   D0: selector code?
  4647.      Registers on exit    ??: address of selector function
  4648.      Result codes
  4649.        noErr                       0   No error
  4650.        ???
  4651.  
  4652.      NOTE:
  4653.      Found in the MPW Traps Interface file on 'Bookmark CD 14'.
  4654.      Available since System 6.0.4 but code will always return error -50
  4655.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  4656.      I (Rene Ros) have written Pascal code to do what this system call
  4657.      probably is planned to do in the future.
  4658.  
  4659. FUNCTION SetGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  4660.      Available since System 7.5?
  4661.      Trap Macro                        Selector
  4662.        _GestaltValueDispatch (0xABF1)  0x0404
  4663.      Result codes
  4664.        noErr                       0   No error
  4665.        ???
  4666.  
  4667. extern  pascal OSErr GetGestaltSelectors(UInt32 theCount,
  4668.                                          UInt32 skipCount,
  4669.                                          GestaltIterator *theItems);
  4670.      Available starting with Copland?
  4671.      Trap Macro                        Selector
  4672.        ???                             ???
  4673.      Result codes
  4674.        noErr                       0   No error
  4675.        ???
  4676.  
  4677.      struct GestaltIterator {
  4678.          UInt32   totalItems;
  4679.          UInt32   validItems;
  4680.          UInt32   iterationKey;
  4681.          OSType   theItems[1];
  4682.      };
  4683.      typedef struct GestaltIterator GestaltIterator;
  4684.  
  4685. Kilo-liners
  4686. ===========
  4687. This chapter will list very small pieces of code which are related to
  4688. any Gestalt Routine.
  4689.  
  4690. Direct Gestalt Calls
  4691. --------------------
  4692. You can use the following code to call directly the Gestalt, NewGestalt and
  4693. ReplaceGestalt traps. In that way the (large) glue code will not be
  4694. installed by your compiler. (Contributions by Lawrence D'Oliveiro and
  4695. Marco Piovanelli).
  4696.  
  4697. FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
  4698.    inline $225F, $201F, $A1AD, $2288, $3E80;
  4699.       { move.l (sp)+, a1 }
  4700.       { move.l (sp)+, d0 }
  4701.       { _Gestalt }
  4702.       { move.l a0, (a1) }
  4703.       { move.w d0, (sp) }
  4704.  
  4705. FUNCTION NewGestalt (selector: OSType;
  4706.                      gestaltFunction: ProcPtr): OSErr;
  4707.    inline $205F, $201F, $A3AD, $3E80;
  4708.       { move.l (sp)+, a0 }
  4709.       { move.l (sp)+, d0 }
  4710.       { _NewGestalt }
  4711.       { move.w d0, (sp) }
  4712.  
  4713. FUNCTION ReplaceGestalt (selector: OSType;
  4714.                          gestaltFunction: ProcPtr;
  4715.                          VAR oldGestaltFunction: ProcPtr): OSErr;
  4716.    inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
  4717.       { move.l (sp)+, a1 }
  4718.       { move.l (sp)+, a0 }
  4719.       { move.l (sp)+, d0 }
  4720.       { _ReplaceGestalt }
  4721.       { move.l a0, (a1) }
  4722.       { move.w d0, (sp) }
  4723.  
  4724. Direct GestaltValue Calls
  4725. -------------------------
  4726. You can use the following code to call directly the NewGestaltValue,
  4727. ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
  4728. trap is available. &AS04
  4729.  
  4730. FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
  4731.    inline $303C, $0401, $ABF1;
  4732.  
  4733. FUNCTION ReplaceGestaltValue(selector: OSType,
  4734.                              replacementValue: LongInt): OSErr;
  4735.    inline $303C, $0402, $ABF1;
  4736.  
  4737. FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
  4738.    inline $303C, $0203, $ABF1;
  4739.  
  4740. GestaltSelectorZero
  4741. -------------------
  4742. With all the selectors that are supposed to return non-zero values if
  4743. installed, it may be helpful to have an utility routine that returns a zero
  4744. value (instead of an error) if a selector isn't installed. It's short and
  4745. sweet because it makes a direct call to the _Gestalt trap; of course this
  4746. means you can't use it on systems earlier than 6.0.4.
  4747. (Contributed by Lawrence D'Oliveiro)
  4748.  
  4749. FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
  4750. {returns the value of the specified Gestalt selector,}
  4751. {or zero if unknown.}
  4752.    inline $201F, $A1AD, $6702, $91C8, $2E88;
  4753.       { move.l (sp)+, d0 }
  4754.       { _Gestalt }
  4755.       { beq.s @2 }
  4756.       { sub.l a0, a0 }
  4757.       { @2: move.l a0, (sp) }
  4758.  
  4759. GestaltBitTest
  4760. --------------
  4761. The GestaltBitTest is a piece of inline assembly code which tests if the
  4762. specified bit is set in the value from the specified Gestalt selector
  4763. (false if the Gestalt call returns an error).
  4764.  
  4765. Example:
  4766.     GestaltBitTest(gestaltAppleEventsAttr, gestaltAppleEventsPresent)
  4767.  
  4768. (Contributed by Lawrence D'Oliveiro)
  4769.  
  4770. FUNCTION GestaltBitTest(Selector: OSType; BitNr: Integer): Boolean;
  4771.    inline
  4772.       $321F, $201F, $A1AD, $6702, $91C8, $2008, $0300, $56C0, $4400, $1E80
  4773.       { move.w (sp)+, d1 }
  4774.       { move.l (sp)+, d0 }
  4775.       { _Gestalt }
  4776.       { beq.s @2 }
  4777.       { sub.l a0, a0 }
  4778.       { @2: move.l a0, d0 }
  4779.       { btst d1, d0 }
  4780.       { sne.b d0 }
  4781.       { neg.b d0 }
  4782.       { move.b d0, (sp) }
  4783.  
  4784. Call Gestalt Function Direct
  4785. ----------------------------
  4786. Suppose you have just loaded an GDEF resource, or replaced one and keep the
  4787. original around and store a pointer to it somewhere private. Suppose next,
  4788. you want to call it to obtain a response without using yet another selector.
  4789. Thats what the following inline code is useful for. Just pass it the
  4790. usual selector and result parameters but also a pointer to the GDEF
  4791. (Lock it if it's a relocatable block).
  4792.  
  4793. FUNCTION CallGestaltDEF (selector: OSType;
  4794.                          var result: LongInt;
  4795.                          aRoutine: ProcPtr): OSErr;
  4796.     inline $205F, $4E90;
  4797.        { move.l (sp)+, a0 }
  4798.        { jsr (a0) }
  4799.  
  4800. Reports
  4801. =======
  4802. When someone reports some findings involving several selectors and/or a
  4803. report is too long to include with the selector entry above, that report
  4804. is listed here. They should be as short as possible with the maximum
  4805. amount of information.
  4806.  
  4807. Accessing the Gestalt Manager
  4808. -----------------------------
  4809. (by Rene Ros)
  4810.  
  4811. Several applications can use additional code to expand their capabilities
  4812. and using this they may be able to access the Gestalt Manager. The software
  4813. listed below are additional code providing access to the Gestalt Manager.
  4814.  
  4815. Only a few locations are listed here, use the filename to search for other
  4816. locations. Or use the known mirror sites of FTP sites.
  4817.  
  4818. CheckGestaltFor (Neil Shulman)
  4819.      Hypercard external to access the Gestalt Manager.
  4820.  
  4821.      ftp://sumex-aim.stanford.edu/info-mac/card/check-gestalt-for-xcmd.hqx
  4822.  
  4823. Gestalt Pro 1.1.2 (Rene G.A. Ros)
  4824.      External for 4TH Dimension Relational Database application from
  4825.      ACI/ACI US.
  4826.  
  4827.      ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-pro-112.hqx
  4828.  
  4829. Gestalt XFCN 3.2.1 (Jeff Iverson)
  4830.      Hypercard XFCN to query the Gestalt Manager.
  4831.  
  4832.      ftp://sumex-aim.stanford.edu/info-mac/card/gestalt-321.hqx
  4833.  
  4834. GestaltExt (Andre Cavegn)
  4835.      External for 4TH Dimension Relational Database application from
  4836.      ACI/ACI US.
  4837.  
  4838.      ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-ext.hqx
  4839.  
  4840. Get Gestalt (AppleScript addition) 1.2 by Mark Alldritt
  4841.      Provides access to the Gestalt Manager for AppleScript scripts.
  4842.  
  4843.      ftp://gaea.kgs.ukans.edu/applescript/osaxen/script-tools-131-as.hqx
  4844.  
  4845. Informant XFCN 1.0 (Jeff Iverson)
  4846.      Hypercard XFCN to query the Gestalt Manager.
  4847.  
  4848.      ftp://sumex-aim.stanford.edu/info-mac/card/information-10-xfcn-demo.hqx
  4849.  
  4850. AppleShare File & Print Server selector codes
  4851. ---------------------------------------------
  4852. (by Rene Ros)
  4853.  
  4854. The selectors are defined when the application has run. If it is still
  4855. running (or wasn't properly quit) the response is one. When the application
  4856. has properly quit the response is zero.
  4857.      admn AppleShare Admin
  4858.      asps AppleShare Print Server
  4859.      hgfd AppleShare File Server
  4860. (these three are undocumented)
  4861.  
  4862. AppleTalk
  4863. ---------
  4864. (by Rene Ros)
  4865.  
  4866. With the release of the System 7 Tuner product, AppleTalk will not be
  4867. loaded at startup, if prior to the previous shutdown AppleTalk was turned
  4868. off in the Chooser. Under this circumstance, the 'atkv' selector is not
  4869. available. If the 'atkv' selector is not available under System 7, this is
  4870. an indicator that AppleTalk cannot be turned on without doing so in the
  4871. Chooser and rebooting the system. &AT02
  4872.  
  4873. Clock Chipped
  4874. -------------
  4875. (provided by Marc Schrier with additional information from Jeff Baudin and
  4876.  Mike Cohen and edited by Rene Ros)
  4877.  
  4878. Several Macintosh computers have been observed to return a different
  4879. machine type value (using the gestaltMachineType selector) when the
  4880. clock speed was changed. Mainly Power Macintosh computers behave like
  4881. this. The following tables provide an overview of these values.
  4882.  
  4883. In addition to clock chipping a Macintosh, you can also:
  4884. - swap a resistor in a Centris 650 to make it a Quadra 650;
  4885. - remove jumper J18 of a Quadra 605 and it becomes a LC475.
  4886. - install jumper J18 on a LC475 and it becomes a Quadra 605.
  4887. - install and remove resistors and jumpers from the Wombat motherboard
  4888.   used in the Centris 650, Quadra 650 and Quadra 800 to switch between
  4889.   those three computers and two new, unreleased machines.
  4890. - remove the LED jumper from a PM 7500 and it becomes a PM 8500.
  4891.  
  4892. ===========================================================================
  4893. Machine Type values returned by clock-chipped M680x0 computers
  4894. ===========================================================================
  4895. Model Name      CPU Speed (MHz)
  4896.                  20   25   33
  4897. ---------------------------------------------------------------------------
  4898. LC III                27-  62
  4899. Q605%            93!  94-  95!
  4900. LC475%           86!  89-  90!
  4901. LC575            87!  91!  92-
  4902. ---------------------------------------------------------------------------
  4903. - value returned when unmodified
  4904. ! value not belonging to any known, released computer
  4905. % if you remove jumper J18 from a Q605 it becomes a LC475
  4906. ---------------------------------------------------------------------------
  4907.  
  4908.  
  4909. ===========================================================================
  4910. Machine Type values returned by clock-chipped PowerPC computers
  4911. ===========================================================================
  4912. Model Name      CPU Speed (MHz)
  4913.                  60   66.6 75   80   82   90  100   110   112   120
  4914. ---------------------------------------------------------------------------
  4915. PM 6100/60(AV)   75- 100       101!
  4916. PM 6100/66(AV)   75  100-      101!
  4917. PM 7100/66(AV)  111! 112-      113! 114!
  4918. PM 7100/80(AV)       112        47-
  4919. PM 8100/80(AV)   61!  64!       65-
  4920. PM 8100/100(AV)                 65             55-   40          12!
  4921. PM 8100/110(AV)                 65             55    40-         12!
  4922. Power100#                  65             55   55-         12!
  4923. ---------------------------------------------------------------------------
  4924. - value returned when unmodified
  4925. ! value not belonging to any known, released computer
  4926. # Macintosh clone by Power Computing
  4927. ---------------------------------------------------------------------------
  4928.  
  4929.  
  4930. ===========================================================================
  4931. Machine Type values returned by modifying the Wombat motherboard
  4932. ===========================================================================
  4933. Architecture   Jumper   No Resistors   Resistor R151   Resistor R152
  4934. ---------------------------------------------------------------------------
  4935. M68040         No        51!            30  C650        36  Q650
  4936.                Yes       59!            30  C650        35  Q800
  4937. PPC PDS Card   No       123  PM 800    120  PM C650    122  PM Q650
  4938.                Yes      N/A            120  PM C650    123  PM 800
  4939. ---------------------------------------------------------------------------
  4940. ! value not belonging to any known, released computer
  4941. ---------------------------------------------------------------------------
  4942.  
  4943. For more info on clock-chipping (or otherwise modifying) Macintosh
  4944. computers:
  4945. http://bambam.cchem.berkeley.edu/~schrier/mhz.html
  4946.  
  4947. Copland
  4948. -------
  4949. (provided by Anonymous contributor, edited by Rene Ros)
  4950.  
  4951. To have the new microkernel, implemented by Copland, not depend on the
  4952. system registry or Gestalt a system call is provided instead:
  4953.  
  4954. enum
  4955. {
  4956.     kSystemInformationVersion = 0
  4957. };
  4958.  
  4959. typedef struct SystemInformation
  4960. {
  4961.     ItemCount    numPhysicalRAMPages;
  4962.     ByteCount    pageSize;
  4963.     ByteCount    dataCacheBlockSize;
  4964.     UInt32       processorVersionNumber;
  4965.     UInt32       numCPUs;
  4966.     ProcessID    kernelProcessID;
  4967. };
  4968.  
  4969. OSStatus GetSystemInformation (PBVersion              theVersion,
  4970.                                SystemInformation *    theSystemInfo);
  4971.  
  4972. Undoubtely Gestalt itself will use this call to return the information
  4973. too.
  4974.  
  4975. For more reading:
  4976.     MicroKernel White Paper
  4977.  
  4978. Copy protection using Gestalt
  4979. -----------------------------
  4980. (by Rene Ros)
  4981.  
  4982. In D e v e l o p 17 Brigham Stevens suggests to use Gestalt and FindFolder
  4983. as a way to implement copy protection in the most compatible way possible.
  4984. By determining several characteristics at installation from the Gestalt Mgr
  4985. and the DirID of the System Folder with FindFolder you can check for this
  4986. info later. When is has changed you can then ask for the serial number
  4987. or a password again.
  4988.  
  4989. Disabling PowerKey
  4990. ------------------
  4991. (from the Macintosh System 7.5 Update 2.0 Developer Read Me provided by an
  4992.  anonymous contributor)
  4993.  
  4994. Using the 'pwky' selector you can enable or disable the PowerKey and/or the
  4995. Shutdown dialog. The code to use this hack should be something like this:
  4996.  
  4997. #ifndef kPowerKey
  4998. #define kPowerKey       0x7F
  4999. #define kShutdownDlog   0x7E
  5000.  
  5001. #define kDissablePwKy   (short) 0x6B
  5002. #define kEnablePwKy     (short) 0x00
  5003.  
  5004. #define kNoDismiss      0x00
  5005. #define kOneSecond      0x70
  5006. #define kTenSeconds     0x400
  5007. #endif
  5008.  
  5009. typedef pascal OSErr (*PwrKeyProc)(short item, short action);
  5010.  
  5011.  
  5012. /************************************************************/
  5013. void   main()
  5014.    OSErr           theErr;
  5015.    PwrKeyProc      pPwrKey;
  5016.  
  5017.    theErr = Gestalt('pwky', &pPwrKey);
  5018.    if(theErr == noErr)
  5019.    {
  5020.          /* To dissable the powerkey */
  5021.          theErr = (*pPwrKey)(kPowerKey,kDissablePwKy);
  5022.  
  5023.          /* To enable the powerkey */
  5024.          theErr = (*pPwrKey)(kPowerKey,kEnablePwKy);
  5025.  
  5026.          /* Never dismiss the shutdown dialog */
  5027.          theErr = (*pPwrKey)(kShutdownDlog,kNoDismiss);
  5028.  
  5029.          /*  Dismiss the shutdown dialog in 112 Ticks (approx. 1 sec) */
  5030.          theErr = (*pPwrKey)(kShutdownDlog,kOneSecond);
  5031.  
  5032.       etc…
  5033.    }
  5034.  
  5035.    return;
  5036. }
  5037.  
  5038. See also the 'pwky' selector entry.
  5039.  
  5040. Environs & SysEnvirons
  5041. ----------------------
  5042. (by Rene Ros)
  5043.  
  5044. Using Macsbug it is very easy to determine that the SysEnvirons function
  5045. uses the Gestalt Manager to fill the fields of the system environment
  5046. record. So, when you install your own gestalt definitions by using the
  5047. ReplaceGestalt function this will also change the information returned
  5048. by SysEnvirons.
  5049. The older Environs function doesn't use the Gestalt Mgr and the code
  5050. seems to look only at two values in ROM.
  5051.  
  5052. Executor Mac-emulator
  5053. ---------------------
  5054. (by Rene Ros)
  5055.  
  5056. Executor is a Macintosh Emulator for DOS machines, published by
  5057. Abacus Research and Development, Inc. (1993/1994). The Gestalt Manager is
  5058. also emulated and the version I have seen (on a 486DX) says it's a MacPlus
  5059. with a 68LC040 processor with MMU. The 'sysv' selector returns 0x607 but
  5060. it also lists a lot of selectors usually not installed by 6.0.7. Like
  5061. the 'edtn' and 'stdf' selectors. For those it then simply returns zero.
  5062. Strangely enough the 'tabl' selector is not installed, but this doesn't
  5063. confuse the Gestalt! application!
  5064.  
  5065. Gestalt Apple Event
  5066. -------------------
  5067. (by John W. Baxter)
  5068.  
  5069. The scriptable Finder, implemented by the Finder Scripting Extension,
  5070. provides an Apple event to query the Gestalt Manager. This can be used from
  5071. AppleScript using the 'computer' command.
  5072. And using the PPC Toolbox this now also means you can query a remote
  5073. computer, provided the Finder Scripting Extension is installed.
  5074. The Finder Scripting Extension is installed with System 7.5 (which also
  5075. includes Finder 7.1.4) but can also be used with Finder 7.1.3. The
  5076. extension will later be rolled into the Finder.
  5077.  
  5078. The direct parameter for this event is a Gestalt selector code. If this is
  5079. the only parameter, the result is the result of calling Gestalt with that
  5080. code.
  5081.  
  5082. An optional second parameter can be included, in which case it is a 32 bit
  5083. number against which the result of calling Gestalt with the given selector
  5084. is tested. When this parameter is present, the event returns true if all
  5085. bits set in the optional parameter are set in the result from Gestalt, and
  5086. false otherwise. In AppleScript, when telling Finder:
  5087.      computer "os  " has 3
  5088. returns true if the low-order two bits are set in the result from Gestalt.
  5089. The equivalent event built "by hand" would be addressed to Finder (on the
  5090. machine of interest) and would have the parameters
  5091.      key        value      type
  5092.      '----'     'os  '     typeType        (alternative:  "os  "  typeChar)
  5093.      'has '     3          typeLongInteger ('has ' is keyASPrepositionHas)
  5094.  
  5095. The event class would be kAEFinderSuite ('fndr'), and the event ID would be
  5096. kAEGestalt ('gstl').
  5097.  
  5098. For more reading:
  5099.     D e v e l o p Magazine, Issue 20. "Scripting the Finder from your
  5100.           Application" by Greg Anderson, page 65.
  5101.     Finder Suite documentation available (starting in March 1995) on the
  5102.           Developer CD Series (Reference) as
  5103.           :Technical Documentation:Apple Events Registry & Suites:
  5104.            AE Suite Finder:Finder Suite
  5105.  
  5106. Gestalt Applications
  5107. --------------------
  5108. (by Rene Ros)
  5109.  
  5110. Several specialized applications are available to display all installed
  5111. Gestalt selectors. And several other applications heavily depend on the
  5112. Gestalt Manager to show information on hardware and software.
  5113.  
  5114. Only a few locations are listed here, use the filename to search for other
  5115. locations. Or use the known mirror sites of FTP sites.
  5116.  
  5117. DisplayGestalt (Craig Marciniak)
  5118.      Small application displays configuration using Gestalt Mgr, includes
  5119.      C-source.
  5120.  
  5121.      ftp://mac.archive.umich.edu/development/libraries/displaygestalt.cpt.hqx
  5122.  
  5123. Gestalt! 3.0 (Roland Mansson)
  5124.      Displays responses from installed selectors.
  5125.  
  5126.      ftp://ftp.lu.se/pub/mac/util/gestalt300.cpt.hqx
  5127.      ftp://sumex-aim.stanford.edu/info-mac/cfg/gestalt-300.hqx
  5128.  
  5129.      Contact: Roland Mansson (roland.mansson@ldc.lu.se)
  5130.  
  5131. GestaltDA 0.4 (Carl C. Hewitt, Apple Computer Inc.)
  5132.      Displays responses from installed selectors.
  5133.  
  5134.      CD-ROM: Bookmark CD (Apple Developer Group)
  5135.      :Tools & Applications:OS/Toolbox:GestaltDA 0.4
  5136.  
  5137.      Contact: D e v e l o p (dev.subs@applelink.apple.com)
  5138.  
  5139. Gestalt Environment 7
  5140.      Application to list a number of installed selectors.
  5141.  
  5142.      mailto:gestalt-selectors-list-request@bio.vu.nl
  5143.             'archive get software/ge7.hqx'
  5144.  
  5145. Go Gestalt appl 1.5 (Paul Reznick)
  5146.      Displays information obtained thru the Gestalt Mgr. 
  5147.  
  5148.      mailto:gestalt-selectors-list-request@bio.vu.nl
  5149.             'archive get software/go-gestalt-15.sit.hqx'
  5150.  
  5151.      Contact: Paul Reznick (PRzeznik@aol.com)
  5152.  
  5153. Tattle-Tech appl (Decision Makers Software, Inc.)
  5154.      Uses Gestalt manager extensively to display all known information.
  5155.  
  5156.      ftp://sumex-aim.stanford.edu/info-mac/cfg/tattle-tech-22.hqx
  5157.  
  5158.      Contact: John Mancino (mancino@decismkr.com)
  5159.  
  5160. TechTool appl 1.0.8 (Micromat Computer Systems)
  5161.      Application to reset PRAM, rebuild DTDB and show Gestalt info.
  5162.  
  5163.      ftp://sumex-aim.stanford.edu/info-mac/cfg/tech-tool-108.hqx
  5164.  
  5165. GestaltValue
  5166. ------------
  5167. (by Marco Piovanelli, addition by Rene Ros)
  5168.  
  5169. The first time you call NewGestaltValue, the library installs two non-
  5170. relocatable blocks in the system heap and the 'gval' gestalt selector. One
  5171. of the blocks is filled with code: it's actually a gestalt definition that
  5172. implements GestaltValue's shared mechanism. The second block contains the
  5173. selectors and values GestaltValue manages. The response returned by the
  5174. 'gval' selector is a pointer to the second non-relocatable block in the
  5175. system heap.
  5176.  
  5177. Dave Radcliffe wrote on 23 March 1993 regarding some information, about the
  5178. GestalValue glue code, listed with version 1.4 of this list:
  5179. ---------------------------------------------------------------------------
  5180. The information on the _GestaltValue trap (0xABF2) is correct based on the
  5181. glue, but because of a mistake on my part, the glue should be checking for
  5182. 0xABF1. A new version of the glue is being distributed on the developer CD
  5183. next month...
  5184. ---------------------------------------------------------------------------
  5185.  
  5186. The GestaltValue library can be found at Info-Mac.
  5187. (ftp://sumex-aim.stanford.edu/info-mac/dev/gestalt-value-lib.hqx)
  5188.  
  5189. GestaltValue & CodeWarrior Problem
  5190. ----------------------------------
  5191. (by Francois Pottier)
  5192.  
  5193. The GestaltValue.o library is made up of several routines. The first time
  5194. someone calls a routine from the library, the library installs itself into
  5195. the System Heap and uses NSetTrapAddress to set up its own trap. Subsequent
  5196. calls to the library will just map to a trap call. This allows the code to
  5197. be loaded only once in memory, even if several INITs use GestaltValue.
  5198.  
  5199. What's the problem? In order to install itself into the System Heap, the
  5200. GestaltValue code must compute how big it is; it does this by subtracting
  5201. the address of the first routine from the address of a stub routine located
  5202. after the last real routine. That's common practice. It assumes, however,
  5203. that the linker will preserve the order of the routines.
  5204.  
  5205. But CodeWarrior's "Import MPW library" command does not preserve the order
  5206. of the functions it finds inside the .o file. As a result, when you call
  5207. NewGestaltValue for the first time, the library finds its own size to be
  5208. negative. It asks the Memory Manager for a block of negative size and
  5209. returns an error (memFullErr, I believe).
  5210.  
  5211. Note that this only happens if your software is the first to call
  5212. GestaltValue since the machine started up. Also, I think it won't happen
  5213. under System 7.5 because GestaltValue is part of 7.5. If your program
  5214. requires 7.5, you probably don't need the GestaltValue.o glue at all.
  5215.  
  5216. Glue code
  5217. ---------
  5218. (by Rene Ros, based on THINK Reference 2.0)
  5219.  
  5220. These development/compiler software contain glue-code to handle a few
  5221. selectors even when the Gestalt Manager is not available.
  5222.  
  5223.      THINK C      (5.0 and later)
  5224.      THINK Pascal (4.0 and later)
  5225.      MPW          (3.2 and later)
  5226.  
  5227. The following selectors can be handled by the glue-code, with all others
  5228. an error (gestaltUndefSelectorErr) will be returned.
  5229.  
  5230.      gestaltAppleTalkVersion = 'atlk';
  5231.      gestaltFPUType          = 'fpu ';
  5232.      gestaltKeyboardType     = 'kbd ';
  5233.      gestaltLogicalRAMSize   = 'lram';
  5234.      gestaltMachineType      = 'mach';
  5235.      gestaltMMUType          = 'mmu ';
  5236.      gestaltPhysicalRAMSize  = 'ram ';
  5237.      gestaltProcessorType    = 'proc';
  5238.      gestaltQuickdrawVersion = 'qd  ';
  5239.      gestaltSystemVersion    = 'sysv';
  5240.      gestaltVersion          = 'vers';
  5241.  
  5242. Unless you are using direct calls, ofcourse.
  5243.  
  5244. INITGestalt standard
  5245. --------------------
  5246. (by Rene Ros, based on INITGestalt proposal by Jeremy Roussak and Rene Ros)
  5247.  
  5248. The INITGestalt proposal tries to define a standard memory structure which
  5249. describes the basic information about software. Using the Gestalt call
  5250. other software obtains a pointer to the structure for software which uses
  5251. the INITGestalt standard.
  5252.  
  5253. You can find the latest version of the INITGestalt proposal at
  5254.      ftp://sumex-aim.stanford.edu/info-mac/dev/init-gestalt-*.txt
  5255. Or by sending an email, with subject 'archive get init-gestalt*', to
  5256.      gestalt-selectors-list-request@bio.vu.nl
  5257.  
  5258. To test your software during implementing INITGestalt, or just to check
  5259. out a selector, you definitly need INITGestalt Inspector:
  5260.      ftp://sumex-aim.stanford.edu/info-mac/cfg/init-gestalt-inspector-10.hqx
  5261.  
  5262. Machine Names
  5263. -------------
  5264. (by Rene Ros et al.)
  5265.  
  5266. The STR# resource with ID -16395, inside the system file, contains a list
  5267. of Macintosh machine names. The selector gestaltMachineType ('mach')
  5268. returns a value which can be used as the index value with a GetIndString
  5269. call to get the appropriate machine name. There area some exceptions to
  5270. this and these are discussed in this report.
  5271.  
  5272. On Macintosh Performas (System 7.1), the Machine Name STR# resource will
  5273. always return the string "Macintosh" (not "Macintosh Performa 450" or
  5274. "Performa 450").  On all other Macintoshes, the string will return the
  5275. correct name. (Mark Dawson)
  5276. [And] if you do a dirty install [of System 7.5 or later] (right on top of
  5277. an existing, pre-7.5 System), your machine type and icon will be preserved.
  5278. If you do a clean install, you'll get the generic name/icon in the
  5279. Finder's "About This Macintosh..." dialog. (Tim Swihart)
  5280. This can be fixed by using the freeware Mac Identifier extension, located
  5281. at ftp://ftp.fluxsoft.com/pub/Mac_Identifier_2.0.sit.hqx.
  5282. Or use the WhoAmI? application, which can be found at
  5283. ftp://sumex-aim.stanford.edu/info-mac/cfg/who-am-i-121.hqx. (Rene Ros)
  5284. Apple says that in the future ID's will be reused and the kMachineNameStrID
  5285. will contain only the text '  Macintosh' (two spaces first) &AT01
  5286. This policy seems to have changed because the System 7.5 Update enabler
  5287. installed by System 7.5 Update 1.0 either contains '  Macintosh',
  5288. '  Macintosh PowerBook' or '  Power Macintosh' (all with two leading
  5289. spaces). Perhaps the 'mach' selector in the future will be used to indicate
  5290. the category only. Then we'll get another mechanism/selector to get the
  5291. real machine type? Rumour goes a new ROM is developed which allows clone
  5292. makers to have their machines identified properly. (Rene Ros, with some
  5293. info from John Mancino)
  5294.  
  5295. All system enablers have the machine name resource included to replace the
  5296. one in the System file. In most cases this resource lists the same
  5297. Macintosh names as the original one in System 7.1 and adds the names of the
  5298. machines the enabler is intended for. But some only list the machines the
  5299. enabler is used with. Therefore, if you want to display the name of a
  5300. machine which isn't of the current machine type you can't rely on this
  5301. resource anymore. (Rene Ros)
  5302.  
  5303. The Performa 600 was originally planned to ship as Macintosh IIvm but the
  5304. name was changed because users thought 'vm' meant 'Virtual Memory'. MOST
  5305. system enablers (i.e. 001, 040, 065 & 201) contain this original name.
  5306.  
  5307. The Machine Name resource in the MAE Enabler 1.0 contains the string
  5308. "MAE 1.0" in these items: 19, 28, 130, 131 and 132.
  5309.  
  5310. The PowerPC Enabler 1.1 enabler contains a Machine Name resource which
  5311. lists these names:
  5312.      items 1-66 contain the item number itself except:
  5313.            12 Power Macintosh 8100/120
  5314.            31 Paula's Desk Macintosh
  5315.            39 Workgroup Server 9150
  5316.            40 Power Macintosh 8100/110
  5317.            46 Power Macintosh 6100/66
  5318.            47 Power Macintosh 7100/80
  5319.            55 Power Macintosh 8100/100
  5320.            64 Power Macintosh 8100/60
  5321.            65 Power Macintosh 8100/80
  5322.            66 Power Macintosh 8100/100
  5323.      items 67-115 are empty except:
  5324.            75 Power Macintosh 6100/60
  5325.           100 Power Macintosh 6100/66
  5326.           101 Power Macintosh 6100/80
  5327.           111 Power Macintosh 7100/60
  5328.           112 Power Macintosh 7100/66
  5329.           113 Power Macintosh 7100/80
  5330.      items 116-123 contain the text "  Power Macintosh"
  5331. "Paula's Desk Macintosh" disappeared again with version 1.1.1 of the
  5332. PowerPC enabler, it was replaced by the number '31' ! :-)
  5333. The duplicate names for some of the Power Macintosh models was resolved
  5334. and is it is now know that some values belong to a never to be released
  5335. ROM version. See the gestaltMachineType entry for more detailed
  5336. information.
  5337.  
  5338. The PowerBook 5300/190 Enabler now lists the full machine names again!
  5339. (Eric-Paul Rebel)
  5340.  
  5341. Macintosh Application Environment
  5342. ---------------------------------
  5343. (by Rene Ros, with thanks to Jos van Wezel for providing the workstation
  5344.  and installing the software.)
  5345.  
  5346. Using the MAE 1.0 demo version is quite stressful since it expires after
  5347. eight hours! Copying files to a disk doesn't work also because all you
  5348. are left with is an file with only the resource map and a few resources.
  5349. All resources are maintained by MAE. But by using ResEdit it is possible
  5350. to copy the resources itself one for one to a file on a floppy disk.
  5351. Under MAE 1.0 these results were found on a SUN SPARCstation 5:
  5352.  
  5353. ===========================================================================
  5354. Summary of Gestalt Selectors installed with MAE 1.0
  5355. ===========================================================================
  5356. Selector      Response  Remark
  5357. ---------------------------------------------------------------------------
  5358. a/ux          3.0.1
  5359. cput              5     MC68040
  5360. fpu               0     none
  5361. mach             19     which is the LC, but the MAE Enabler only has
  5362.                         'MAE 1.0' in the machine name STR# resource
  5363. mmu               0     none
  5364. proc              5     MC68040)
  5365. rom            2048K
  5366. romv           1917
  5367. snd               0     no sound support, no system beeps to choose from
  5368. snhw           awac
  5369. cith              0     huh?
  5370. ---------------------------------------------------------------------------
  5371.  
  5372. See also a note with the gestaltMachineType ('mach') selector entry.
  5373.  
  5374. Macintosh Clones
  5375. ----------------
  5376. (by Rene Ros, contributions by Jean-Pierre Curcio, Kenneth Knotts and Marc
  5377.  Schrier. Also based on MacWEEK articles.)
  5378.  
  5379. So far the clone manufacturers have released computers which hardware
  5380. is identical, though clockspeed may be different, to other computers
  5381. released by Apple. This section contains a table of clone model names and
  5382. the equivalent Apple ID number and constant name.
  5383.  
  5384. The Pioneer clone (codename Pioneer MPC-GX1 where MPC stands for Multimedia
  5385. Personal Computer) was observed at CeBIT '95.
  5386.  
  5387. ===========================================================================
  5388. Relabled Machines
  5389. ===========================================================================
  5390. Manufacturer       Model Name          Apple Hardware Model
  5391.                                        ID    Constant
  5392. ---------------------------------------------------------------------------
  5393. Pioneer            MPC-GX1             100   gestaltPowerMac6100_66
  5394. Power Computing    Power 100            55   gestaltPowerMac8100_100
  5395.                    Power 120            12!  gestaltPowerMac8100_120
  5396.                    PowerWave 604/120    67   gestaltPowerMac9500
  5397.                    PowerWave 604/132    67   gestaltPowerMac9500
  5398.                    PowerWave 604/150    67   gestaltPowerMac9500
  5399. Radius             81/110               40   gestaltPowerMac8100_110
  5400.                    System 100          ???   gestaltPowerMac8100??? ?
  5401. ---------------------------------------------------------------------------
  5402. ! value not belonging to any by Apple released computer
  5403. ---------------------------------------------------------------------------
  5404.  
  5405. Modern Memory Manager
  5406. ---------------------
  5407. (by John W. Baxter and Eric Schlegel)
  5408.  
  5409. The Universal Headers from Apple have a revised Memory Manager heap zone
  5410. header and named constants, which provide a documented methode of detecting
  5411. the Modern Memory Manager. It is as yet unknown whether the kNewDebugHeap
  5412. flag set implies kNewStyleHeap set.  The code here does not assume so...but
  5413. some might wish to test each flag in its own function.
  5414.  
  5415. Boolean IsModernMemory (void) {
  5416.  
  5417.     THz myZone = GetZone ();
  5418.  
  5419.     return (myZone->heapType & (kNewStyleHeap | kNewDebugHeap)) != 0;
  5420.     }
  5421.  
  5422. If you use older headers, replace the return statement with this line:
  5423.  
  5424.     return (0 != ((*myZone).maxNRel & 0x0600));
  5425.  
  5426. The new headers have the heapType field as a Byte (followed by a Byte
  5427. filler), together replacing the maxNRel short.  The bits in it are defined
  5428. by these masks:
  5429.  
  5430. enum {
  5431. /* masks for Zone->heapType field */
  5432.     k32BitHeap      = 1, /* valid in all Memory Managers */
  5433.     kNewStyleHeap   = 2, /* true if new Heap Manager is present */
  5434.     kNewDebugHeap   = 4  /* true if new Heap Manager is running in debug
  5435.                             mode on this heap */
  5436. };
  5437.  
  5438. PPC Libraries
  5439. -------------
  5440. (based on a posting by John Baxter in the comp.sys.mac.programmer Usenet
  5441.  newsgroup on Internet.)
  5442.  
  5443. Some of the Gestalt selector functions are smart enough to avoid crashing
  5444. when the user removed the library file from the Extensions folder without
  5445. restarting the machine. And some selector functions aren't that smart.
  5446. Safest is to preflight the first call you make into the library (for code
  5447. or data) or include a preflight in your startup. 
  5448.  
  5449. QuickTime
  5450. ---------
  5451. (by Michael Hecht, additions by Rene Ros)
  5452.  
  5453. If you install QuickTime under System 6, a major portion of the Alias
  5454. Manager and FSSpec support is also added. But, QT doesn't implement the
  5455. Gestalt selectors because the implementation is not complete. You must
  5456. check for either Alias Mgr or QuickTime.
  5457.  
  5458. These are the limitations for the Alias Mgr installed by QuickTime:
  5459.     - NewAlias will accept fromFile parameter, but it never creates a
  5460.       relative alias.
  5461.     - NewAliasMinimalFromPath and ResolveAliasFile aren't available.
  5462.     - ResolveAlias and UpdateAlias ignore the fromFile parameter.
  5463.     - MatchAlias may be called but the kARMMultVols, kARMSearchMore and
  5464.       kARMSearchRelFirst flags aren't available and ignored if passed.
  5465.       Also, a matchProc will never be called.
  5466.     - Won't mount network volumes.
  5467.  
  5468. And these are the FSSpec calls available with System 6 when QuickTime is
  5469. installed:
  5470.     - FSMakeFSSpec
  5471.     - FSpOpenDF
  5472.     - FSpOpenRF
  5473.     - FSpCreate
  5474.     - FSpDirCreate
  5475.     - FSpDelete
  5476.     - FSpGetFInfo
  5477.     - FSpSetFInfo
  5478.     - FSpSetFLock
  5479.     - FSpRstLock
  5480.     - FSpRename
  5481.     - FSpCatMove
  5482.     - FSpOpenResFile
  5483.     - FSpCreateResFile
  5484.     - FSpGetCatInfo
  5485.  
  5486. See for more information Technical Note M.QT.MovieTB.Q&As (QT 510) and
  5487. D e v e l o p 11 magazine on page 122.
  5488.  
  5489. RAM Doubler
  5490. -----------
  5491. (by anonymous contributor and Rene Ros)
  5492.  
  5493. RAM Doubler implements virtual memory in a different way than the normal
  5494. Apple VM mechanism. It looks like this is done in corporation with Apple
  5495. since a selector installed by RAM Doubler is 'vmem' which is all lower-case
  5496. and thus reserved by Apple.
  5497. In addition the response from this selector is always (long)'RaM2' which
  5498. is the creator type of RAM Doubler. It seems this selector is used to
  5499. indicate which software is used to extend the capabilities of the Virtual
  5500. Memory Manager.
  5501. RAM Doubler also installs the selector 'vmFn' which seems to be a pointer
  5502. to a function to control RAMDoubler (1.0?) or to obtain information. It
  5503. looks like registers are used to pass parameters to and from that function.
  5504. D0 perhaps holds values 1 to 6 as input and perhaps A0 is used for the
  5505. return value.
  5506.  
  5507. FUNCTION VMExtensionControl? (selector: Integer; VAR result: LongInt): OSErr;
  5508.      Registers on entry   D0: selector code
  5509.      Registers on exit    A0: result code
  5510.                           D0: error code
  5511.      Result codes
  5512.        noErr                       0 No error
  5513.        invalidSelector?          206 Invalid selector value?
  5514.        ???
  5515.  
  5516. Values used as selector:
  5517.      enum {
  5518.      kVMControlType?        = 1,       /* type VM extension: RaM2 */
  5519.      kVMControlVersion?     = 2,       /* version VM extension as BCD */
  5520.      kVMControl???          = 3,       /* engine version as BCD?: 0x0313 */
  5521.      kVMControlMemSize?     = 4,       /* unknown: Get/SetMemorySize? */
  5522.      kVMControlMemSize?     = 5,       /* unknown: Get/SetMemorySize? */
  5523.      kVMControl???          = 6,       /* unknown */
  5524.      kVMContolMaxFunctions? = MAXINT}; /* returns number of valid */
  5525.                                        /*  selectors or any other value */
  5526.                                        /*  outside the  current 1-6 */
  5527.                                        /*  range */
  5528.  
  5529. Remember: all this is heresay!!!
  5530.  
  5531. Because of all this you can imagine RAM Doubler replaces/installs the
  5532. following System Software selectors (and I think it does):
  5533. lram, pgsz, ram , vm  , vmbs.
  5534.  
  5535. Relabled Macintosh Models
  5536. -------------------------
  5537. (by Rene Ros;
  5538.  Originally based on the Mac Models List by J.D. Sterling Babcock.
  5539.  Since Summer 1995 based on MacFacts by Apple Computer Inc.)
  5540.  
  5541. The Performa models usually (there are some exceptions) return a  machine
  5542. ID# for the model they are based on. The table below lists several models
  5543. which are simply relabled and the hardware model they are based on.
  5544.  
  5545. ===========================================================================
  5546. Relabled Machines
  5547. ===========================================================================
  5548. Relabled Model          Hardware Model               Note
  5549. Name                    Constant
  5550. ---------------------------------------------------------------------------
  5551. Macintosh ED            gestaltMacPlus               sold in Netherlands?,
  5552.                                                      512K with Mac SE case
  5553.                                                      color
  5554. Macintosh LC III+       gestaltPerforma460
  5555. Performa 200            gestaltClassicII
  5556. Performa 250            gestaltMacColorClassic       sold in Australia and
  5557.                                                      Britain
  5558. Performa 275            gestaltMacColorClassic
  5559. Performa 400            gestaltMacLCII
  5560. Performa 405            gestaltMacLCII
  5561. Performa 410            gestaltMacLCII
  5562. Performa 430            gestaltMacLCII
  5563. Performa 450            gestaltMacLCIII
  5564. Performa 460                                         not relabeled, own ID
  5565. Performa 466            gestaltPerforma460
  5566. Performa 467            gestaltPerforma460
  5567. Performa 475            gestaltMacLC475
  5568. Performa 476            gestaltMacLC475
  5569. Performa 520            gestaltMacLC520
  5570. Performa 550            gestaltMacLC550
  5571. Performa 560            gestaltMacLC550
  5572. Performa 575            gestaltMacLC575
  5573. Performa 577            gestaltMacLC575
  5574. Performa 578            gestaltMacLC575
  5575. Performa 580            gestaltMacLC580
  5576. Performa 588            gestaltMacLC580
  5577. Performa 600                                         not relabeled, own ID
  5578. Performa 630            gestaltMac630
  5579. Performa 631            gestaltMac630
  5580. Performa 635            gestaltMac630
  5581. Performa 636            gestaltMac630
  5582. Performa 637            gestaltMac630
  5583. Performa 638            gestaltMac630
  5584. Performa 640            gestaltMac630
  5585. Performa 5200           gestaltPowerMac5200_75
  5586. Performa 5210           gestaltPowerMac5200_75
  5587. Performa 5215           gestaltPowerMac5200_75
  5588. Performa 5220           gestaltPowerMac5200_75
  5589. Performa 6110           gestaltPowerMac6100_60
  5590. Performa 6112           gestaltPowerMac6100_60
  5591. Performa 6115           gestaltPowerMac6100_60
  5592. Performa 6116           gestaltPowerMac6100_60
  5593. Performa 6117           gestaltPowerMac6100_60
  5594. Performa 6118           gestaltPowerMac6100_60
  5595. Performa 6200           gestaltPowerMac6200_75
  5596. Performa 6216           gestaltPowerMac6200_75
  5597. Performa 6218           gestaltPowerMac6200_75
  5598. Performa 6220           gestaltPowerMac6200_75
  5599. Performa 6230           gestaltPowerMac6200_75
  5600. Performa 6300           gestaltPowerMac6200_75
  5601. PowerMac 6100/60AV      gestaltPowerMac6100_60
  5602. PowerMac 7100/66AV      gestaltPowerMac7100_66
  5603. PowerMac 8100/80AV      gestaltPowerMac8100_80
  5604. PowerMac WGS 6150/60    gestaltPowerMac6100_60
  5605. PowerMac WGS 6150/66    gestaltPowerMac6100_66
  5606. PowerMac WGS 8150/80    gestaltPowerMac8100_80
  5607. PowerMac WGS 8150/110   gestaltPowerMac8100_110
  5608. Quadra 660AV            gestaltMacCentris660AV
  5609. Workgroup Server 60     gestaltMacCentris610
  5610. Workgroup Server 80     gestaltMacQuadra800
  5611. Workgroup Server 95     gestaltQuadra950
  5612. Workgroup Server 95+    gestaltQuadra950
  5613. ---------------------------------------------------------------------------
  5614.  
  5615. General Info
  5616. ============
  5617. The following sections provide general information needed or useful in
  5618. relation to the Gestalt Manager.
  5619.  
  5620. System Managers
  5621. ---------------
  5622. Listed below is a table with the different software components of the
  5623. System Software with their related selectors. The selectors listed with
  5624. this table are included in the (known) 'Apple System Software' and
  5625. 'Apple Additional Software' chapters.
  5626. It provides a cross-reference to selectors and a starting point into other
  5627. documentation (Inside Macintosh).
  5628. With System Software versions before 6.0.4 (and Gestalt) you may need to
  5629. use TrapAvailable to determine the presence of certain system parts.
  5630.  
  5631. ===========================================================================
  5632. System Software components and their selectors
  5633. ===========================================================================
  5634. Manager                        Determine presence/features by using:
  5635. ---------------------------------------------------------------------------
  5636. 8*24 Graphics Card             gc24
  5637. A/UX                           a/ux
  5638. ADB Mgr                        ???
  5639. Alias Mgr                      alis
  5640. AOCE Utilities                 ???
  5641. Apple Event Mgr                evnt
  5642. Apple Guide                    help, reno
  5643. Apple Photo Access             kpcd
  5644. Apple Remote Access            arb , strm
  5645. AppleScript                    ascr, ascv
  5646. AppleTalk Mgr                  atkv, atlk
  5647. AppleTalk Phase 2              atkv >= 53
  5648. At Ease                        kids
  5649. ATA Manager? (the SCSI Mgr equiv. for IDE)
  5650.                                TrapAvailable(0xAAF1)
  5651. Audio CD Access                aucd
  5652. Authentication Mgr             ???
  5653. Catalog Mgr                    ???
  5654. CD-ROM Software                see:
  5655.                                   Apple Photo Access
  5656.                                   Audio CD Access
  5657.                                   Foreign File Access
  5658.                                   High Sierra File Access
  5659.                                   ISO 9660 File Access
  5660. CloseView                      BSDa
  5661. Code Fragment Mgr              cfrg
  5662. Collection Mgr                 cltn
  5663. Color Mgr                      ???
  5664. Color Picker Mgr               cpkr
  5665. ColorSync Utilities            cmta, cmtc
  5666. Communications Toolbox         ctbm, ctbu, ctbv
  5667.                                see also:
  5668.                                   Communications Resource Mgr
  5669.                                   Connection Mgr
  5670.                                   Telephone Mgr
  5671.                                   Terminal Mgr
  5672. Communications Resource Mgr    crm 
  5673. Component Mgr                  cpnt
  5674. Compression Mgr                icmp
  5675. Connection Mgr                 conn
  5676. Control Mgr                    no need to check
  5677. Control Strip                  sdev, csvr
  5678. Cuda Dispatch Mgr              cuda? (for more info:
  5679.                                       Developer Note 'Mac LC630 &
  5680.                                       Quadra 630' and SAA7194/6 Philips
  5681.                                       Desktop Video Handbook)
  5682. Cursor Device Manager          TrapAvailable(0xAADB)
  5683. Cursor Utilities               qd >= gestalt32BitQD
  5684. Data Access Mgr                dbac
  5685. Date, Time and Measurement Utilities
  5686.                                ???
  5687. Debugger                       debugger dependant, see also MacsBug
  5688. Deferred Task Mgr              no need to check?
  5689. Desk Manager                   no need to check
  5690. Desktop Animation Mgr (Copland?)
  5691.                                danm
  5692. Desktop Mgr                    PBHGetVolParms fills GetVolParmsInfoBuffer.
  5693.                                Test for the bHasDesktopMgr bit (12) of the
  5694.                                vMAttrib field for all volumes.
  5695. Device Mgr                     no need to check
  5696. Dialog Mgr                     ditl, TrapAvailable(_DialogMgrDispatch)
  5697. Dictionary Mgr                 dict
  5698. Digital Signatures Mgr         dsig
  5699. Disk Initialization Mgr        fs  
  5700. Display Mgr                    dplv, dply
  5701. Docking Mgr                    ???
  5702. Drag Manager                   drag
  5703. Easy Access                    eajt, easy
  5704. Edition Mgr                    edtn
  5705. Event Mgr                      no need to check?
  5706. Exception Mgr                  no need to check?
  5707. File Mgr                       ???, fs  
  5708. File System Mgr                fs  , fsm 
  5709. File Transfer Mgr              fxfr
  5710. Finder                         fndr
  5711. FindFolder function            fold
  5712. Flagship                       flag
  5713. Font Mgr                       font
  5714. Foreign File Access            ufox
  5715. Gestalt Mgr                    gval, tabl, vers, TrapAvailable(_Gestalt),
  5716.                                TrapAvailable(_GestaltValueDispatch)
  5717. Graphics Worlds                (qd > gestaltOriginalQD and qd < gestalt8BitQD)
  5718.                                 or (qd >=gestalt32BitQD)
  5719. Help Mgr                       help
  5720. High Sierra File Access        hscd
  5721. Icon Utilities                 icon, TrapAvailable(_IconDispatch)
  5722. Interprogram Messaging Mgr     ???
  5723. ISO 9660 File Access           hscd, iscd
  5724. LAP Mgr                        atlk >= 53
  5725. List Mgr                       no need to check ?
  5726. MacsBug                        See PT 535 - MacsBug Q&As TechNote
  5727. MacTCP                         mtcp
  5728. Mathematical and Logical Utilities
  5729.                                no need to check?
  5730. Memory Mgr                     addr, cash, lram, os  
  5731.                                see also: Modern Memory Mgr
  5732. Memory Management Utilities    addr, TrapAvailable(_HWPriv) ?
  5733. Menu Mgr                       no need to check
  5734. Message Mgr                    mess
  5735. MIDI Mgr                       ???
  5736. Mixed Mode Mgr                 mixd
  5737. Modern Memory Mgr              see: Modern Memory Manager section of the
  5738.                                     Report chapter.
  5739. Movie Toolbox                  ???
  5740. Name Registry                  nreg
  5741. Navigation Services (Copland?) nvsv
  5742. Notification Mgr               nmgr, TrapAvailable(_NMInstall) with System
  5743.                                      before 6.0.4 ?
  5744. OCE Toolbox                    ocet, oceu
  5745. Open Firmware                  opfw
  5746. OpenDoc (CALib)                calb
  5747. OS Utilities                   depends on call
  5748. OSA                            Use Component Mgr to check for Generic
  5749.                                Scripting Component
  5750. Package Mgr                    no need to check
  5751. Parameter RAM Utilities        no need to check?
  5752. PC Card Manager                pccd, TrapAvailable(_PCCardDispatch) [0xAAF0]
  5753. PC Exchange                    pcxg
  5754. Picture Utilities              sysv >= 0x0700
  5755. Popup CDEF                     pop!
  5756. Power Mgr                      powr
  5757. PowerTalk                      see:
  5758.                                   Digital Signatures Mgr,
  5759.                                   OCE Toolbox,
  5760.                                   S&F Server,
  5761.                                   SDP Find,
  5762.                                   SDP Prompt,
  5763.                                   SDP Standard Directory,
  5764.                                   SMP Mailer,
  5765.                                   SMP Sendletter
  5766. PPC Toolbox                    ppc 
  5767. Printing Manager               no need to check?
  5768. Process Mgr                    os  
  5769. Queue Utilities                ???
  5770. QuickDraw                      qd  , qdrw
  5771. QuickDraw 3D                   qd3d, q3vc, q3v 
  5772. QuickDraw GX                   qdgx
  5773. QuickDraw GX Graphics          gfxa, grfx
  5774. QuickDraw GX Printing Mgr      pmgr
  5775. QuickTime                      qtim, qtrs
  5776. Realtime Mgr                   rtmr
  5777. Resource Mgr                   rsrc
  5778. S&F Server (PowerTalk)         see OCE Toolbox
  5779. SANE (OmegaSANE)               ???
  5780. Scrap Mgr                      scra
  5781. Script Mgr                     scr#, scri, TrapAvailable(_ScriptUtil)
  5782. SCSI Mgr                       scsi
  5783. SDP Find (PowerTalk)           dfnd
  5784. SDP Prompt (PowerTalk)         prpv
  5785. SDP Standard Directory (PowerTalk)
  5786.                                sdvr
  5787. Segment Mgr                    no need to check
  5788. Server control calls           TrapAvailable(ServerDispatch) [0xA094]
  5789. Shared Library Mgr             aslm, slmp
  5790. Shutdown Mgr                   TrapAvailable(_Shutdown) ?, pwky
  5791. Slot Mgr                       nubs, slot, slt1, sltc
  5792. SMP Mailer (PowerTalk)         malr
  5793. SMP Sendletter (PowerTalk)     spsl
  5794. Sound Mgr                      snd , snhw, TrapAvailable(_SoundDispatch)
  5795. Sound Input Mgr                snd 
  5796. Speech Mgr                     ttsc
  5797. Speech Recognition             srta, srtb
  5798. Standard Catalog Package       ???
  5799. Standard File Package          stdf
  5800. Standard Mail Package          ???
  5801. Standard NBP                   nlup
  5802. Start Mgr                      ???
  5803. System Toolbox (hardware)
  5804.    coprocessor                 fpu
  5805.    disks                       intd
  5806.    keyboard                    kbd 
  5807.    machine                     mach
  5808.    misc. ICs                   hdwr, mmu , rbv , sccr, sccw, ser ,
  5809.                                via1, via2
  5810.    processor                   cput, proc, sysa
  5811.    RAM ICs                     ram , prty
  5812.    ROM ICs                     rom , romv
  5813.    trackpad                    tpad
  5814. System Toolbox (software)      lmem, micn, misc, os  , ostt, osyv,
  5815.                                sysv, tbtt, xttt
  5816. Telephone Mgr                  tele
  5817. Terminal Mgr                   term
  5818. Text Services Mgr              tsma, tsmv
  5819. Text Services Manager for TextEdit
  5820.                                tmTE, tmTV
  5821. Text Utilities                 depends on call
  5822. TextEdit                       te  , teat
  5823. Thread Mgr                     thds
  5824. Time Mgr                       tmgr
  5825. Toolbox Utilities              depends on call
  5826. Translation Mgr                xlat
  5827. TV & Video                     mtv2, tv  
  5828. Unicode Converter (Copland?)   unic
  5829. Vertical Retrace Mgr           no need to check
  5830. Video                          see: TV & Video
  5831. Virtual Memory Mgr             pgsz, vm  
  5832. Window Mgr (Copland?)          wind
  5833. Workstation Management Agent   wma.
  5834. WorldScript                    scri >= 0x0710, ws 1
  5835. XTND Technology                XTND
  5836. ---------------------------------------------------------------------------
  5837.  
  5838. Gestalt Problems
  5839. ----------------
  5840. This section lists all known problems related to the Gestalt selectors.
  5841. Each problem is also listed with each of the entries in the selector
  5842. chapters above. The table below provides an overview.
  5843.  
  5844. ===========================================================================
  5845. Overview Gestalt selector problems
  5846. ===========================================================================
  5847. Software                 Code  Problem                           Status
  5848. ---------------------------------------------------------------------------
  5849. Apple Photo Access ext   kpcd  always returns 0xFFFFFFF7         R unclear
  5850. AppleScript ext          ascv  different formats version         R problem?
  5851. AppleTalk                atkv  majorRev of version in hex          problem?
  5852. Color Picker ext         cpkr  incorrect return values?            problem?
  5853. Control Strip cp         sdev  two symbolic names defined          problem?
  5854. Desktop Printer Ext      pxtn  v1.0 doesn't install selector?      problem?
  5855. Easy Access cp           easy  incorrect return values           C unknown
  5856. Icon Utilities code      icon  not installed                     C SYS 712?
  5857. File System Manager      fsm   not installed with System 7.5       UPD 1.0
  5858. Link Tool Mgr 2.0 ext    ltma  incorrect version value?          R problem?
  5859. PowerTalk ext/Control Strip 1.0 cp
  5860.                          sdvr  same selector for both?           C CS 1.1?>
  5861. QuickDraw 3D             qd3d  selector function crashes?          problem?
  5862. SAM ext                  LLSM  selector function crashes           4.0.1>
  5863. Speech Manager ext       ttsc  With Sys 7.5.1 PPC Glue bit set
  5864.                                 on 68K machines                    unclear
  5865. Speech Recognition ext   srta, srtb
  5866.                                installed even if no SR possible  R unclear
  5867. System (enablers)        *ALL* Gestalt Mgr with System 7.1.2     C SYS 7.5>
  5868.                          *ALL* Minimal System (Disk Tools) may
  5869.                                 lie about managers present       C unknown
  5870.                          *ALL CTB*
  5871.                                Comm. TB for System 6 doesn't
  5872.                                 install any of the CTB selectors C never
  5873.                          alis  QT part. installs but no selector C ok
  5874.                          cash  never installed?                    unclear
  5875.                          cput  incorrect values 68K header file  C fixed
  5876.                                system 7.5? returns incorrect
  5877.                                 values for 68K                   C unknown
  5878.                          ctbv  PM returned 1.1 while ROM has 1.0 C SU 3.0 >
  5879.                          fs    QT part. installs but no selector C ok
  5880.                          intd  bit 1 (disk spon up) not set      R SYS751>?
  5881.                          kbd   Adjustable Keyboard incorrect     C SU 2.0 >
  5882.                                not installed on PM7100 (7.1.2)     unclear
  5883.                          mach  duplicate numbers for PPC upgrade
  5884.                                 cards and new PPC PowerBooks       problem?
  5885.                          mixd  'gestaltMixedModeVersion' is
  5886.                                 incorrect name                   C fixed
  5887.                          qdrw  HasColor set on B/W machines (7.0)C unknown
  5888.                          rsrc  PartialRsrcs not set with 7.0     C 7.1 >
  5889.                          sltc  No information on IIsi slot       C never?
  5890.                          sysv  KanjiTalk 6.0.7 incorrect return value
  5891.                                                                  C sysvINIT
  5892.                                System 6.0.8 returns 0x0607         never
  5893.                                System 7.1.2/PPC card returns 0710  unclear
  5894.                          tv    Bits 3 and 4 incorrectly set        unclear
  5895.                                Bit 5 incorrectly clear             unclear
  5896. System/Apple Event ext   evnt  constants overlap header files    C fixed
  5897. Shared Libary Manager    aslm  function of early versions crash    fixed
  5898. Transporter ext          TRNS  calling function causes interface
  5899.                                 problems
  5900. Virex cp?                VrkS  triggers quickscan feature only
  5901.                                 by calling function
  5902. ---------------------------------------------------------------------------
  5903. R       = unconfirmed but known to be reported to Apple
  5904. C       = confirmed
  5905. fixed   = problem is fixed, see selector entry for more information
  5906. ok      = meant to work this way...
  5907. unclear = unclear if it will ever be fixed
  5908. unknown = unknown when it will be fixed
  5909.  
  5910. One general Gestalt problem is that NewGestalt calls StripAddress on the
  5911. procptr passed to it, not on a local copy, so the stripping becomes
  5912. permanent. This is fixed by System 7.5.1.
  5913.  
  5914. Inside Macintosh Operating System Utilities says (on page 1-37) the A0 and
  5915. D0 registers are used to pass/return data to/from the the selector function.
  5916. This is incorrect since the function is Pascal stack based.
  5917. (Nobu Toge, Steve Ko)
  5918.  
  5919. History
  5920. -------
  5921. This section contains a short overview about the history of the Gestalt
  5922. Manager and its predecessors.
  5923.  
  5924.  
  5925. **ENVIRONS**
  5926.  
  5927.      PROCEDURE Environs (VAR rom,machine: INTEGER);
  5928.  
  5929. With the introduction of the Macintosh the system routine 'Environs' was
  5930. introduced. It allowed to obtain two pieces of information: the ROM version
  5931. and a value to indicate the machinetype. This "ROM oriented" way soon
  5932. appeared to be insufficient when the range of Macintosh hardware and
  5933. software became more diverse.
  5934.  
  5935.  
  5936. **SYSENVIRONS**
  5937.  
  5938.      FUNCTION SysEnvirons (versionRequested: INTEGER;
  5939.                            VAR theWorld: SysEnvRec): OSErr;
  5940.  
  5941. With System 4.1 a new system routine was introduced which allowed the
  5942. programmer to obtain more information about the current configuration.
  5943. Upon completion SysEnvirons filled the SysEnvRec with the information.
  5944. This was however an "all-or-nothing" situation, it was not possible to
  5945. obtain just one piece of information.
  5946. To allow for larger system environment records with more information one
  5947. needed to specify the version number of the system environment record. The
  5948. last version, introduced with System 6, was version 2 which had nine fields.
  5949.  
  5950.  
  5951. **GESTALT**
  5952.  
  5953.      FUNCTION Gestalt (code: LONGINT; VAR feature: LONGINT): OSErr;
  5954.  
  5955. You may wonder how one can be so stupid to list the Gestalt routine wrong...
  5956. However, this is how the Gestalt routine was presented to developers in
  5957. the Preliminairy Developer Note regarding System 7 in 1989. It was
  5958. originally written in 1988.
  5959. There was no selector of type OSType as we known it today. Instead a list
  5960. of numerical constants was used, like:
  5961.  
  5962.      zVersion    = $1;   { Gestalt Version }
  5963.      zMachType   = $100; { machine type }
  5964.      zSystemVers = $101; { system file version }
  5965.  
  5966. and nine others.
  5967. But the principle used with todays Gestalt routine was there: request one
  5968. specific piece of information and you'll get it. Nothing more and nothing
  5969. less. Back then it wasn't the Gestalt Manager since there was only one
  5970. routine. Both the NewGestalt and the ReplaceGestalt did not exist.
  5971. In June 1992 (released in February 1993?) three new functions were added
  5972. to the Gestalt Manager: NewGestaltValue, ReplaceGestaltValue,
  5973. DeleteGestaltValue and SetGestaltValue.
  5974.  
  5975. Abbreviations
  5976. -------------
  5977. A/UX     - Apple UNIX
  5978. ADB      - Apple Desktop Bus
  5979. AMU      - Apple Memory Unit?
  5980. ARBus    - Apple RISC Bus
  5981. ARTA     - Apple Real Time Architecture
  5982. AS       - AppleShare
  5983. ASC      - Apple Sound Chip
  5984. ASCII    - American Standard Code for Information Interchange
  5985. ASIC     - Application Specific Integrated Circuit
  5986. ASLM     - Apple Shared Library Manager
  5987. ATA      - ??? (ATA Mgr, for IDE drive support)
  5988. AURP     - AppleTalk Update-based Routing Protocol
  5989. AWAC     - Audio Waveform Amplifier and Converter
  5990. BIOS     - Basic I/O System
  5991. Caboose  - processor that manages the keyswitch, system power,
  5992.            the real-time clock, and parameter RAM
  5993. CDEF     - Control DEFinition (code resource)
  5994. CFM      - Code Fragment Manager
  5995. CHRP     - Common Hardware Reference Platform
  5996. CISC     - Complex Instruction Set Computer (compare with RISC)
  5997. CLUT/DAC - color look-up table and digital-to-analog converter IC
  5998. Combo    - chip, combines the functions of the SCC and the SCSI controller
  5999. CPU      - Central Processing Unit
  6000. Cuda     - ASIC that implements the ADB, PRAM and Soft Power on more
  6001.            recent Macs. Apperantly this IC will (or already does?) emulate
  6002.            the IBM keyboard controller also.
  6003. Cyclops  - IC to control remote control receiver.
  6004. DAFB     - Direct Access Frame Buffer
  6005. DAV      - Digital Audio Video (connector)
  6006. DDC      - Display Driver Chip
  6007. DESC     - Digitale Video Decoder and Scaler
  6008. DFAC     - Digitally Filtered Audio Chip
  6009. DITL     - Dialog ITems List (resource)
  6010. DLL      - Dynamically Linkable Library or
  6011.            Driver Loader Library
  6012. DMA      - Direct Memory Access
  6013. DN       - Developer Note
  6014. DOS      - Disk Operating System (to run a computer???)
  6015. DRAM     - Dynamic RAM
  6016. DSP      - Digital Signal Processor
  6017. EASC     - Enhanced Apple Sound Chip
  6018. FAT      - File Allocation Table?
  6019. FMC      - Fitch Memory Controller
  6020. FPU      - Floating Point Unit
  6021. GDEF     - Gestalt DEFinition (code resource)
  6022. GPi      - General Purpose Input
  6023. IDE      - Integrated Device Electronics
  6024. IIC      - Inter-Integrated Circuit, standard bus for talking to TV related
  6025.            chips using a 3-wire signal.
  6026. IM       - Inside Macintosh
  6027. IOP      - Input/Output Processor
  6028. IWM      - Integrated Woz Machine
  6029. Jaws     - ???
  6030. JDB      - Junction Data Bus
  6031. JMC      - Jaws Memory Controller
  6032. MacOS    - Macintosh Operating System
  6033. MCU      - Memory Control Unit
  6034. MAE      - Macintosh Application Environment (Mac system on UNIX RISC)
  6035. MEO      - Macintosh Easy Open
  6036. MESH     - Macintosh Enhanced SCSI Hardware
  6037. MMU      - Memory Management Unit
  6038. NBP      - Name Binding Protocol
  6039. NTSC     - National Television Standards Comittee
  6040.            (standard broadcast TV in North America and Japan)
  6041. NVRAM    - non-volatile RAM
  6042. OCE      - Open Colloboration Environment
  6043. OMC      - Orwell Memory Controller
  6044. OS       - Operating System
  6045. OSA      - Open Scripting Architecture:
  6046.            OSA is the Open Scripting Architecture. It is the layer upon
  6047.            which all scripting languages sit and the method by which
  6048.            applications call scripts. (Jon Pugh)
  6049. OSL      - Object Support Library
  6050. OSS      - Operating System Support chip
  6051. PAL      - Phase Alternating Line system
  6052.            (standard broadcast TV in most of Europe, South America, and
  6053.             southern Asia)
  6054. PB       - PowerBook
  6055. PCI      - Peripheral Component Interconnect
  6056. PCMCIA   - Personal Computer Memory Card International Association
  6057. PDS      - Processor-Direct Slot
  6058. PGC      - Parity Generator Chip
  6059. PMMU     - Paged Memory Management Unit
  6060. PSRAM    - Pseudo Static RAM
  6061. PPC      - Process-to-Process Communication, also:
  6062.            PowerPC
  6063. PRAM     - Parameter RAM
  6064. ProDOS   - Professional Disk Operating System? (OS for the Apple ][)
  6065. PWM      - Pulse-Width Modulated?
  6066. QD       - QuickDraw
  6067. RAM      - Random Access Memory (see DRAM & SRAM, compare ROM)
  6068. RAMDAC   - Random Access Memory, Digital/Analog Converter
  6069. RBV      - RAM-Based Video
  6070. RISC     - Reduced Instruction Set Computer (compare with CISC)
  6071. ROM      - Read Only Memory
  6072. RSB      - Ram Based Sound
  6073. RTC chip - Real-Time Clock chip
  6074. RPU      - Random Parity Unit
  6075. SANE     - Standard Apple Numerics Environment
  6076. SCC      - Serial Communications Controller
  6077. SCSI     - Small Computer System Interface
  6078. SDP      - Standard Directory Package
  6079. SECAM    - standard broadcast TV in France and the former Soviet
  6080. SIMM     - Single In-line Memory Module
  6081. SMP      - Standard Mailer Package or
  6082.            Symmetric MultiProcessor
  6083. SOM      - System Object Model
  6084. Sonic    - chip for built-in Ethernet
  6085. Sporty   - a custom IC that provides sound output amplification functions
  6086. SRAM     - Static RAM
  6087. SWIM     - Super-Wozniak Integrated Machine
  6088. TCP/IP   - Transmission Control Protocol/Internet Protocol
  6089. TE       - TextEdit (32Kb limited built-in text-engine)
  6090. TN       - Technical Note
  6091. TTS      - Text-To-Speech
  6092. Valkyrie - IC containing the video display control
  6093. VDAC     - Video Digital to Analog Converter
  6094. VIA      - Versatile Interface Adapter
  6095. VM       - Virtual Memory
  6096. VRAM     - Video RAM
  6097. YANCC    - Yet Another NuBus Controller Chip
  6098.  
  6099. Sources
  6100. -------
  6101. A    Apple Computer, Inc.
  6102. AD    Documentation & Magazines
  6103. AD01   MacTCP Programmer's Guide
  6104. AD02   AppleTalk Remote Access API External Reference Specification
  6105. AD03   Macintosh Easy Open programmer's docs
  6106. AD04   Thread Manager 1.1 and 2.0 documentation
  6107. AD05   Drag Manager Programmer's Guide
  6108. AD06   Sound Manager Tech Note on BookMark CD 16
  6109. AD07   D e v e l o p 17, p. 123
  6110. AD08   MAE Compatibility Hints
  6111. AD09   Color Matching documentation on ETO 14 and BookMark 18
  6112. AD10   OS Compatibility doc on WWDC 1994 CD
  6113. AD11   IM PPC System Software
  6114. AD12   IM OS Utilities
  6115. AD13   D e v e l o p 19, p. 105
  6116. AD14   File System Manager Guide, Sep. 1994
  6117. AD15   Apple Remote Access API, part of Mac OS SDK
  6118. AD16   Apple Guide Authoring Kit
  6119. AD17   IM Advanced Color Imaging (Draft)
  6120. AD18   Apple Tech Info Library (http://www.info.apple.com/til.html)
  6121. AD19   Macintosh Programmer's Toolbox Assistant (Online Reference)
  6122. AD20   IM Sound
  6123. AD21   Preliminary Copland Headers (WWDC 1995)
  6124. AD22   Copland Technical Overview (Draft)
  6125. AD23   Developer Note Workgroup Server 9150
  6126. AD24   PCMCIA API Manual
  6127. AD25   Developer Note Macintosh PowerBook 190
  6128. AD26   Developer Note Macintosh PowerBook 5300 Computer
  6129. AD27   Developer Note Macintosh PowerBook 2300c
  6130. AD28   Developer Note Macintosh PowerBook Processor Card Upgrade Kit
  6131. AD29   IM Files Errata. February 1995/Rev. June 1995
  6132. AD30   D e v e l o p 24, p. ???
  6133.  
  6134. Inside Macintosh can be found at:
  6135. http://www.info.apple.com/dev/insidemac.html
  6136.  
  6137. Sample Code can be found at:
  6138. http://www.info.apple.com/dev/sc.html
  6139.  
  6140. D e v e l o p Magazine can be found at:
  6141. http://www.info.apple.com/dev/develop.html
  6142.  
  6143. AS    Source code & header files
  6144. AS01   QuickTime ImageCompression source files
  6145. AS02   CommToolbox 1.1 source files
  6146. AS03   MPW Interface files on Bookmark CD 14
  6147. AS04   GestaltEqu header file on ETO 12
  6148. AS05   GestaltEqu header file on ETO 13
  6149. AS06   GestaltEqu header file on BookMark CD 17
  6150. AS07   TSMTE header file on BookMark CD 17
  6151. AS08   AppleScript header file on ETO 14
  6152. AS09   Drag header file on ETO 14
  6153. AS10   XTNDInterface header file on ETO 14
  6154. AS11   ControlStrip header file on BookMark CD 19
  6155. AS12   AppleGuide header file on BookMark CD 18
  6156. AS13   Macintosh on RISC SDK (also on CodeWarrior CD)
  6157. AS14   Gestalt header file as part of Universal Interfaces 2.0a1
  6158. AS15   GestaltEqu header file for ETO 16 (on CodeWarrior 5 CD)
  6159. AS16   PPCToolbox.p header file on CodeWarrior 5 CD
  6160. AS17   Several header files on ETO 16
  6161. AS18   Open Transport Client Note on the Mac OS SDK #2 CD
  6162. AS19   Gestalt.h header file on WWDC Presentations 1995 CD
  6163. AS20   Gestalt.h header file on ETO 18
  6164.  
  6165. AT    Technical Notes
  6166. AT01   TN M.OV.GestaltSysenvirons (OV 16), May 1987/Rev. Sep. 1995
  6167. AT02   TN M.NW.AppleTalk2 (NW 13), Feb.1992
  6168. AT03   TN M.DV.CD-ROMDriver (DV 22), May 1993
  6169. AT04   TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
  6170. AT05   TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
  6171. AT06   TN OS 05 - System Update 3.0, July 1993/Rev. May 1994
  6172. AT07   TN M.DV.CuriousSCSI, May 1994
  6173. AT08   TN OS 06 - Control Strip Modules, July 1994/Rev. Sep. 1994
  6174. AT09   TN M.ME.VMMemoryMapping (TN-Memory), July 1987/Rev. March 1988
  6175. AT10   TN M.PT.A/UX.Q&As, Oct. 1990/Rev. Sep. 1993 
  6176. AT11   TN M.QD.ColorQD Q&As, April 1990
  6177. AT12   TN OS 07 - System 7.5 Update 1.0, February 1995
  6178.  
  6179. The Technical Notes can be found at:
  6180. http://www.info.apple.com/dev/technotes/Main.html
  6181.  
  6182. S    Symantec Corp.
  6183. S01    THINK Pascal 4.0 interface files
  6184. S02    THINK C GestaltGlue source files
  6185. S03    THINK Reference 1.0 and 2.0
  6186.  
  6187. M    Miscellaneous sources
  6188. M01    Gestalt DA 0.4 1990 (Carl C.Hewitt)
  6189. M02    Gestalt dcmd 1.0 (Eric Simenel, Apple Computer France)
  6190. M03    sysvINIT source files (Apple Computer Japan, Inc.)
  6191. M04    TMON Professional Reference Manual, p.192 (ICOM Simulations)
  6192. M05    AfterDarkGestalt.h file (Berkeley Systems, Inc.)
  6193. M06    SoftwareFPU Programmer Info (John Neil & Associates)
  6194. M07    GestaltZeigen (Kevin B. Hardman)
  6195.  
  6196. Definitions and Formats
  6197. =======================
  6198. This chapter explains where the word 'Gestalt' comes from, a few things
  6199. are defined and it explains how each selector code entry looks like.
  6200.  
  6201. Use in Language
  6202. ---------------
  6203.  
  6204. **WEBSTER'S DICTIONARY**
  6205. ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
  6206. \-<\e>n\ or gestalts (1922)
  6207.   [G, lit., shape, form]
  6208.   :a structure, configuration, or pattern of physical, biological, or
  6209.   psychological phenomena so integrated as to constitute a functional unit
  6210.   with properties not derivable by summation of its parts.
  6211.  
  6212.   (Try this one: http://www.fwi.uva.nl/htbin/webster.cgi?gestalt)
  6213.  
  6214. **GERMAN-DUTCH DICTIONARY**
  6215. Gestalt w [-en]
  6216.   stature, figure, form; Ritter von der Traurigen -, knight of the
  6217.   sorrowful figure.
  6218.  
  6219. Definitions
  6220. -----------
  6221.  
  6222. **APPLE SOFTWARE**
  6223. This category includes all selectors installed by software published by
  6224. Apple Computer, Inc.
  6225. Inside Macintosh says this about them:
  6226.      "Apple reserves for its own use all four-character sequences
  6227.       consisting solely of lowercase letters and non alphabetic ASCII
  6228.       characters".
  6229. It includes all selectors of the next two categories:
  6230.  
  6231. **APPLE SYSTEM SOFTWARE**
  6232. This category includes all selectors installed by System Software from
  6233. Apple Computer, Inc.
  6234.  
  6235. **APPLE ADDITIONAL SOFTWARE**
  6236. These are selectors installed by additional, non-system, software from
  6237. Apple Computer, Inc.
  6238.  
  6239. **THIRD PARTIES SOFTWARE**
  6240. These are selectors installed by software from parties other than Apple
  6241. Computer, Inc.
  6242. Inside Macintosh says about these:
  6243.      "If you have registered a creator string with Apple, you are
  6244.       strongly encouraged to use that sequence as your selector code".
  6245. This type of selectors is included in this list with the motto "If you
  6246. don't know they are there, you can't do anything with them".
  6247. Especially the Third Party selectors may change with every new release and
  6248. are therefore only listed in the 'known selectors' part when the author has
  6249. described the structure in the documentation or by email to me. These
  6250. selectors don't have a high priority but when possible I want to know at
  6251. least which software installs it to exclude it as a possible
  6252. "Apple selector".
  6253. Some people at Apple also differentiate between commercial developers and
  6254. others, as being "third" and "fourth" parties respectively. But with this
  6255. list this is not the case.
  6256.  
  6257. Format Selector Entry
  6258. ---------------------
  6259. Format used to display information about each selector:
  6260.  
  6261. selector_code (Software_name & type [since_version], by company/author)
  6262.      constant_name (selector code in hex)
  6263.      description
  6264.  
  6265.      enum {
  6266.      #define selectorconstant 'selector_code'
  6267.      constant_1 = value1,  /* remark &ref.number_to_source */
  6268.      constant_n = valuen}; /* remark &ref.number_to_source */
  6269.  
  6270.      NOTE and/or WARNING:
  6271.  
  6272. Where the type is one of:
  6273. app  application (APPL)
  6274. cp   control panel (cdev)
  6275. enbl enabler
  6276. ext  extension (INIT/appe/RDEV etc.)
  6277.  
  6278. Example:
  6279.  
  6280. COLA (Sugarwater ext [1.0] by John Sculley)
  6281.      gestaltSugarwaterVersion
  6282.      Returns version of Sugarwater as NumVersion.
  6283.  
  6284.      enum {
  6285.      #define gestaltSugarwaterVersion 'COLA' /* &AB01 */
  6286.      gestaltSugarwaterLightVersion = 0x0200}; /* first light version */
  6287.  
  6288.      WARNING: This example is fictitious.
  6289.  
  6290.      NOTE:
  6291.      Sugarwater? See the book 'West of Eden, The End of Innocence at
  6292.      Apple' by Frank Rose.
  6293.  
  6294. Most selectors are listed as four characters, if there are only two or
  6295. three characters displayed the remainder are spaces (or it's a typo!).
  6296. Diacritical characters are shown in the most logical normal character and
  6297. at the end of the entry a note is included about which key-combination to
  6298. press with a normal International system and US keyboard layout to get the
  6299. required diacritical character and also listed is its hexadecimal code.
  6300. When 'INF' is at the end of the first line it means it is an informational
  6301. selector, all others are environmental selectors.
  6302. The source reference number may also be used in other places than indicated
  6303. above. It then applies to other parts of the entry or to the whole entry.
  6304. A single question mark indicates an uncertainty regarding the information
  6305. in front of the question mark. Three question marks indicate complete
  6306. absence of the information.
  6307. Some symbolic names may not originate from official publications.
  6308.  
  6309. Symbolic Names Suffixes
  6310. -----------------------
  6311. The last characters of the symbolic names form a suffix which indicates
  6312. the type of the returned value. Below is a table which lists the different
  6313. types of suffix and their meaning.
  6314.  
  6315. ===========================================================================
  6316. Symbolic Names Suffixes
  6317. ===========================================================================
  6318. Suffix                   Meaning
  6319. ---------------------------------------------------------------------------
  6320. Addr                     Value is an address, i.e. to the base address of
  6321.                          a memory-mapped device or to a function in
  6322.                          memory.
  6323. Attr                     Value is a range of 32 bits (0 is the least
  6324.                          significant bit), must compare with list of
  6325.                          constants and use BitTst or similair. Sometimes
  6326.                          it is a bitmask, then use BitAnd.
  6327. Count                    Value is a number indicating how many of the
  6328.                          indicated type exist.
  6329. Icon                     Value is the resource ID of an icon.
  6330. Size                     Value is a size, usually in bytes.
  6331. Table                    Value is the base address of a table.
  6332. Type                     Value is an index to map to a version or name.
  6333. Version                  Value is a version number. See the section
  6334.                          'Format Version Numbers' below, for a list of
  6335.                          different formats of version numbers.
  6336. <none>                   If there is no suffix like the ones above, the
  6337.                          presence of the selector only implies the
  6338.                          software which installed the selector is present.
  6339.                          The returned value is then private to the
  6340.                          installee.
  6341. ---------------------------------------------------------------------------
  6342.  
  6343. Format Version Numbers
  6344. ----------------------
  6345. **BCD (Binary Coded Decimal)**
  6346.      0x0402 means 4.0.2. Usually the lower two bytes of the response.
  6347.  
  6348. **INTEGER**
  6349.      The decimal representation of the returned value in the low-byte is
  6350.      the version.
  6351.  
  6352. **Double BCD** (my own fantasy name..., RR)
  6353.      0x00010108 means 1.1.8.
  6354.  
  6355. **NumVersion**
  6356.      The format of the LongInt response can be coerced into type NumVersion,
  6357.      which is the same format as used for the 'vers' resource type.
  6358.  
  6359.      type
  6360.       NumVersion = packed record
  6361.        case INTEGER of
  6362.         0: (majorRev: SignedByte;  {1st part of version number in BCD}
  6363.             minorRev: 0..9;        {2nd part is 1 nibble in BCD}
  6364.             bugFixRev: 0..9;       {3rd part is 1 nibble in BCD}
  6365.             stage: SignedByte;     {stage code: dev, alpha, beta, final}
  6366.             nonRelRev: SignedByte);{revision level of non-released version}
  6367.         1: (version: LONGINT);     {to use all 4 fields at one time}
  6368.        end;
  6369.  
  6370.      stage is one of: 0x20 = development
  6371.                       0x40 = alpha
  6372.                       0x60 = beta
  6373.                       0x80 = final
  6374.  
  6375. About this list
  6376. ===============
  6377. The Gestalt Manager is a collection of system routines which allows
  6378. applications to test for the availability of software and hardware. Because
  6379. of the increasing number of different software and hardware configurations,
  6380. this is getting an important issue. It probably already is and known by the
  6381. term 'compatibility'.
  6382. The Gestalt function allows applications to obtain information about the
  6383. current configuration. Selectors are used to refer to certain information.
  6384. A selector is of type OSType (a four byte value) and usually contain four
  6385. ASCII characters. For example: the selector 'sysv' causes the version of
  6386. the current system is returned. Other functions, NewGestalt and
  6387. ReplaceGestalt, allow programmers to install their own Gestalt selectors.
  6388. Programmers need to know these selectors beforehand to be able to request
  6389. and interpret the value returned by the Gestalt function.
  6390. See for more detailed information on how to use the Gestalt Manager
  6391. routines Inside Macintosh part VI (old series). The new Inside
  6392. Macintosh: Operating System Utilities replaces IM VI.
  6393. The Driver Gestalt calls (status calls to device drivers) are not covered
  6394. by this list.
  6395. When you already have one or more of the new IM issues you may be a bit
  6396. disappointed. I was, because of the very minimal information provided
  6397. regarding the availability of the system routines. Of most routines you
  6398. will find no information on how to test their availability.
  6399.  
  6400. This Gestalt Selectors List intends to list all known selectors, but in
  6401. reality this means it lists all selectors known to the editor.
  6402. I would like to see this list to be a combined effort by different persons
  6403. who have together access to a wide area of information.
  6404. This list may contain (educated?) guesses and perhaps even false
  6405. information, so no guarantee is made about the contents.
  6406. You may use this information freely (see Legal Stuff section below), but
  6407. when you find information not included with this list; please tell me. If
  6408. you have additions, corrections, comments, suggestions, news about
  6409. available software, etc., mail it me. Please, also mention the source you
  6410. used, if any.
  6411. You can send contributions, remarks, etc. (using the form included below)
  6412. to this email address:
  6413.     rgaros@bio.vu.nl
  6414. If you want to remain anonymous, please mention this and it will be taken
  6415. care of.
  6416. I don't have all the documentation or knowledge and I don't want to, and
  6417. I'am certainly not Mr.Gestalt.
  6418.  
  6419. Availability
  6420. ------------
  6421. If you downloaded this list from CompuServe, a BBS, or any other service,
  6422. you will notice some strange things like 'FTP-sites' which have to do with
  6423. the fact that this list originates from the Internet.
  6424. Although the GSL can be found on most networks outside the Internet, you
  6425. may be able to access the Internet also from AppleLink, AOL, CompuServe and
  6426. eWorld. Contact your network provider for information on how to access the
  6427. Internet or how to send email to an Internet address.
  6428.  
  6429. This list is available in the following ways:
  6430.  
  6431. **INTERNET**
  6432.  
  6433. _FINGER_
  6434. Using Finger to obtain the latest version is no longer possible.
  6435.  
  6436. _FTP-SITES_
  6437.  
  6438. INFO-MAC ARCHIVES
  6439. Every minor and major version is submitted to the Info-Mac archives:
  6440.  
  6441. ftp://sumex-aim.stanford.edu/info-mac/dev/info/gestalt-selectors-*.hqx
  6442.  
  6443. It is also available on its mirror sites. A list of the mirror sites can
  6444. be found at:
  6445.  
  6446. http://www.bio.vu.nl/home/rgaros/mirror-list.html
  6447.  
  6448. Contact: Info-Mac Moderator (info-mac-request@sumex-aim.stanford.edu)
  6449.  
  6450.  
  6451. _USENET_
  6452. This list is too large to post to any of the subgroups of the
  6453. comp.sys.mac.programmer (c.s.m.p.) newsgroups. Therefore, since version 2.2,
  6454. only an announcement about the release of a new version is posted to these
  6455. newsgroups:
  6456.     news:comp.sys.mac.programmer.codewarrior
  6457.     news:comp.sys.mac.programmer.help
  6458.     news:comp.sys.mac.programmer.info
  6459.     news:comp.sys.mac.programmer.misc
  6460.     news:comp.sys.mac.programmer.tools
  6461.  
  6462. _WWW_
  6463.  
  6464. APPLE COMPUTER INC., U.S.A.
  6465. The GSL can be found on the Apple WWW server in
  6466.  
  6467. http://www.info.apple.com/cgi-bin/lister-pl?Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities
  6468.  
  6469. Which is mirrored on the FTP site of Apple Europe at
  6470.  
  6471. ftp://ftp.info.euro.apple.com/Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities/
  6472.  
  6473. Contact: webmaster@info.apple.com
  6474.  
  6475. NORTHWESTERN UNIVERSITY, U.S.A.
  6476. The GSL can be found at the Northwestern University WWW server, together
  6477. with other Macintosh FAQs:
  6478.  
  6479. http://www.astro.nwu.edu/lentz/mac/faqs/source/gestalt.html
  6480.  
  6481. Contact: Robert Lentz (lentz@annie.astro.nwu.edu)
  6482.  
  6483. VRIJE UNIVERSITEIT, NL
  6484. The GSL can be found behind the home page of the editor at the Vrije
  6485. Universiteit's Faculty of Biology WWW server:
  6486.  
  6487. http://www.bio.vu.nl/home/rgaros/
  6488.  
  6489. or directly at:
  6490.  
  6491. http://www.bio.vu.nl/home/rgaros/gestalt/
  6492.  
  6493. Contact: Rene G.A. Ros (rgaros@bio.vu.nl)
  6494.  
  6495. **AMERICA ONLINE (AOL)**
  6496.  
  6497. You can find the GSL on AOL in the "MDV/Documents and Proposals" directory.
  6498.  
  6499. Contact: none, who wants to upload it to AOL?
  6500.  
  6501. **APPLELINK**
  6502.  
  6503. You can find the GSL on AppleLink in this location:
  6504.  
  6505. Developer Support:Developer Services:Tool Chest:OS/Toolbox:
  6506.  
  6507. **COMPUSERVE**
  6508.  
  6509. Since version 2.0 this list is uploaded to the Macintosh Developers Forum
  6510. (MACDEV). Only new minor and major versions will be uploaded once. The GSL
  6511. is available in the Tools/Debuggers (13) section. Or use the Internet
  6512. locations by using GO INTERNET.
  6513.  
  6514. **EWORLD**
  6515.  
  6516. You can find the GSL on eWorld in this location:
  6517.  
  6518. Apple Developer Services:Tool Chest:OS/Toolbox:
  6519.  
  6520. The shortcut to Apple Developer Services is 'devservice'.
  6521.  
  6522. **GENERAL**
  6523.  
  6524. _CD-ROM_or_BBS_
  6525. Because of permissions I granted you may get this list from a CD-ROM or via
  6526. a BBS from Internet (or any other network) or a CD-ROM. If you do, and the
  6527. release was more than two months ago, there is probably already a newer
  6528. version.
  6529. You can find the GSL on the latest release or upcoming release of these
  6530. CD-ROM titles:
  6531.  
  6532. Apprentice CD-ROM                    (Celestin Company)
  6533. BBS in a BOX CD-ROM                  (Arizona Macintosh Users Group)
  6534. Bookmark CD                          (Apple Computer, Inc.)
  6535. CodeWarrior CD                       (MetroWerks Corporation)
  6536. Developer CD Series, Tool Chest      (Apple Computer, Inc.)
  6537. Info-Mac CD-ROM                      (Pacific HiTech, Inc.)
  6538. MacHack CD                           (MacTech Magazine)
  6539. The Right Stuffed CD-ROM             (Quantum Leap Technologies, Inc.)
  6540.  
  6541. _MAILING_LIST_
  6542. Every person on the mailing list automatically receives an update by email
  6543. whenever there are some changes. If you want to subscribe or unsubscribe to
  6544. this mailing list you need to send email to this address:
  6545.      gestalt-selectors-list-request@bio.vu.nl
  6546. Then put in the subject line either 'subscribe' or 'unsubscribe'.
  6547.  
  6548. The mailing list is moderated, which means everybody can email to:
  6549.     gestalt-selectors-list@bio.vu.nl
  6550. But only after approval of the moderator the other subscribers will receive
  6551. your posting. This guarantees that no confidential contribution is
  6552. distributed before the moderator sees it.
  6553. If mail to you bounces eight times you're automatically unsubscribed.
  6554.  
  6555. This service is only possible to those who have an account on Internet or
  6556. any other network reachable from the Internet (AOL, AppleLink, eWorld,
  6557. CompuServe, Fidonet, etc.). I can not provide mailing of printed versions
  6558. or on disk by normal surface mail.
  6559.  
  6560. _MAIL_ARCHIVE_SERVER_
  6561. You can retrieve the latest versions of this list and other software
  6562. by sending email to this address:
  6563.      gestalt-selectors-list-request@bio.vu.nl
  6564. In the subject line you need to enter 'archive' and then put one command
  6565. behind it or only 'archive' in the subject line with one or more commands
  6566. in the body of your email preceded by the keyword 'archive'. These commands
  6567. can be:
  6568.      help             to get some help on using the archive server
  6569.      ls <dir>         to list the contents of the specified directory
  6570.      get <dir>/<file> to have the specified file sent to you by email.
  6571. To obtain the abstracts of all files available you can use this command:
  6572.      archive get ABSTRACTS
  6573.  
  6574. Your actions may be logged.
  6575.  
  6576. _PRINTED_
  6577. If you want this list printed on paper you may want to try a feature
  6578. included with the LaserWriter 8 software. With it you can print four
  6579. pages on a single sheet of paper. When you set the page breaks correct,
  6580. this produces a very neat, little booklet.
  6581.  
  6582. Gestalt Submission Form
  6583. -----------------------
  6584. You can use this form to report information you found on already included
  6585. selectors. But you can also use it to register new Gestalt selector codes.
  6586. If you want to register the selector code your software installs, make sure
  6587. you registered your code first with Apple Computer, Inc. Also, it is your
  6588. good right if you chose to keep the meaning of the response value private.
  6589. If so, still register so that others can at least detect your software by
  6590. determining if the selector is present.
  6591.  
  6592. Software means, in this form, the software which installs the selector
  6593. code. Not the whole package, just the extension or control panel (perhaps
  6594. application) itself.
  6595. The package is the product name in which the software is included and
  6596. distributed.
  6597. If data is not available or relevant, leave it blank. When the selector
  6598. contains non-ASCII characters, please also provide the hexadecimal value.
  6599.  
  6600. You can also fill in this form on-line because it is also on the WWW
  6601. pages of the GSL: http://www.bio.vu.nl/home/rgaros/gestalt/
  6602.  
  6603.  
  6604. Your name: 
  6605.  
  6606. Your email address: 
  6607.  
  6608. Your company name: 
  6609.  
  6610. Do you want to remain anonymous? Yes / No
  6611.  
  6612. Software name: 
  6613.  
  6614. Software type: O application 
  6615.                O control panel
  6616.                O extension (also 'appe')
  6617.                O other:
  6618.  
  6619. Category:      O Apple System Software
  6620.                O Apple Additional Software
  6621.                O Apple Software
  6622.                O Third Parties Software
  6623.  
  6624. Package name: 
  6625.  
  6626. Author or Company name: 
  6627.  
  6628. Gestalt Selector: 
  6629.  
  6630. Constant name: 
  6631.  
  6632. First version to install selector: 
  6633.  
  6634. Source of information: 
  6635.  
  6636. Short description of the returned response:
  6637.  
  6638.  
  6639.  
  6640.  
  6641.  
  6642. Additional constant names and values for the response value meaning:
  6643.  
  6644.  
  6645.  
  6646.  
  6647.  
  6648. Please email this form to this Internet address: rgaros@bio.vu.nl
  6649.  
  6650. Acknowledgements
  6651. ----------------
  6652. I want to thank the following persons for their contributions and
  6653. support of this list:
  6654.  
  6655. ===========================================================================
  6656. Name                                       Internet Email Address
  6657. ---------------------------------------------------------------------------
  6658. Anonymous contributor(s)                   anonymous@secret.bvd.nl
  6659. Anonymous contributor 'Fig'                an274807@anon.penet.fi
  6660. Lonnie R. Abelbeck                         abelbeck@dev.abelbeck.com
  6661. Daniel Azuma                               dazuma@cco.caltech.edu
  6662. J.D. Sterling Babcock                      jdsb@ee.duke.edu
  6663. Jeff Baudin, Micromat Computer Systems     micromat@nbn.com
  6664. John W. Baxter                             jwbaxter@pt.olympus.net
  6665. Martin Bestmann                     kruemel@theorie3.physik.uni-erlangen.de
  6666. Mason L. Bliss                             mason@cis.umassd.edu
  6667. Scott Bronson                              urge@mcl.mcl.ucsb.edu
  6668. Jim Browne                                 jbrowne@ncsa.uiuc.edu
  6669. Richard Buckle                             richardb@cocytus.demon.co.uk
  6670. Ivan M Cavero Belaunde                     ivanski@world.std.com
  6671. John Champion                              denali@metronet.com
  6672. Mike Cohen                                 isis@netcom.com
  6673. Marc Cooperman                             coopem@panix.com
  6674. Paul Cunningham, Teknosys, Inc.            Teknosys@aol.com
  6675. Jean-Pierre Curcio                         JPC83@calvacom.fr
  6676. Mark Dawson                                marc@apple.com
  6677. Anthony DeRobertis                         derobert@clark.net
  6678. Lawrence D'Oliveiro                        ldo@waikato.ac.nz
  6679. Alex Dosher (Developer CD Leader), Apple Computer, Inc.
  6680.                                            alyx@apple.com
  6681. Dave Falkenburg, Apple Computer Inc.       falken@apple.com
  6682. Andy Fyfe                                  andy@bandr.vip.best.com
  6683. Rick Gansler                               gansler@boardwalk.tiac.net
  6684. Jason Goldman, CircleDream Software        Jay_Goldman@mail.magic.ca
  6685. M. David Greenspon                         gremicf@yalevm.ycc.yale.edu
  6686. C.K. Haun                                  haun@apple.com
  6687. Michael Hecht                              Michael_Hecht@mac.sas.com
  6688. Robert Hess                                robert_hess@macweek.ziff.com
  6689. Bill Hofmann                               wdh@fresh.com
  6690. Laurent Humbert                            lhumbert@sw15.com
  6691. Don Johnson, Apple Computer Inc.           (??? via devsupport)
  6692. Mark B. Johnson                            mjohnson@apple.com
  6693. Michael F. Kamprath                        kamprath@earthlink.net
  6694. John Kawakami, MacTech Magazine            online@xplain.com
  6695. Jonathan Kleid                             jonjk@leland.stanford.edu
  6696. Kenneth Knotts, Power Computing            knottsk@PowerCC.com
  6697. Peter Kocourek                             petr@duttnxc.tn.tudelft.nl
  6698. Steve Ko                                   sko@apple.com
  6699. Rich Kubota, Apple Computer Inc.           Rich_Kubota@quickmail.apple.com
  6700. Roy Leban, Akimbo Systems                  RoyLeban@akimbo.com
  6701. David B. Lamkins                           dblamkins@aol.com
  6702. Robert Lentz                               lentz@annie.astro.nwu.edu
  6703. David Lewis                                lewis@netcom.com
  6704. Spencer Low                                spencerl@crl.com
  6705. John Mancino, Decision Maker's Software    mancino@decismkr.com
  6706. Roland Mansson                             roland.mansson@ldc.lu.se
  6707. Matsubayashi Kohji                         matubays@ics.es.osaka-u.ac.jp
  6708. William H. Leininger                       whl@popmail.mcs.net
  6709. Duane Murphy, Novell Inc.                  damurphy@wc.novell.com
  6710. Masatsugu Nagata                           nagata@kurims.kyoto-u.ac.jp
  6711. Fabrizio Oddone                            oddone@di.unito.it
  6712. Carl R. Osterwald                          cro@br213mail.nrel.gov
  6713. Marco Piovanelli                           piovanel@ghost.dsi.unimi.it
  6714. Kees Pols                                  kpols@bio.vu.nl
  6715. Francois Pottier                           pottier@clipper.ens.fr
  6716. Ken Prehoda                                kenp@nmrfam.wisc.edu
  6717. Jon Pugh                                   jonpugh@netcom.com
  6718. Quinn "The Eskimo!"                        quinn@quinn.echidna.id.au
  6719. Dave Radcliffe, Apple Computer Inc.        radcliff@apple.com
  6720. Eric-Paul Rebel                            eprebel@knoware.nl
  6721. Thomas Reed                                reed@telesphere.wustl.edu
  6722. Pete Resnick                               resnick@cogsci.uiuc.edu
  6723. Paul Reznick                               PRzeznik@aol.com
  6724. Alex Rosenberg, Apple Computer Inc.        alexr@apple.com
  6725. Leonard Rosenthol                          leonardr@aladdinsys.com
  6726. Jeremy Roussak                             jeremyr@dcs.qmw.ac.uk
  6727. Ray Sanders                                72511.232@CompuServe.COM
  6728. Eric Schlegel, Microsoft Corporation       ericsc@microsoft.com
  6729. Marc Schrier                               schrier@garnet.berkeley.edu
  6730. Mark Simmons                               72511.256@CompuServe.COM
  6731. Mark Sproul                                sproul@eos.ap.org
  6732. Patrick Stadelmann                    Patrick.Stadelmann@etudiants.unine.ch
  6733. Brian Stern                                Jaeger@fquest.com
  6734. Zalman Stern                               zalman@adobe.com
  6735. Tim Swihart                                tim_swihart@quickmail.apple.com
  6736. Ilan Szekely                               ILANS@ds.huji.ac.il
  6737. Victor Tan                                 victort@extro.ucc.su.oz.au
  6738. Nobu Toge                                  ntoge@netcom.com
  6739. Rodrigo Torres, Berkeley Systems           brklysystm@aol.com
  6740. John Tsombakos                             johnts@iii.net
  6741. Hans Verbrugge                             hans@hannibal.NL.net
  6742. Maurice Volaski, Flux Software             support@fluxsoft.com
  6743. Dave Wallace                               waggawagga@i-link.net
  6744. John Watte                                 h+@metrowerks.com
  6745. Jos van Wezel                              wezel@bio.vu.nl
  6746. Jonathan Wilson                            toast@diss.hyphen.com
  6747. Terence Worley, Microsoft Corporation      terrywo@microsoft.com
  6748. Chris Wysocki                              wysocki@netcom.com
  6749. ---------------------------------------------------------------------------
  6750.  
  6751. And the members of the Computer Department of the Biology Faculty at the
  6752. Vrije Universeit in Amsterdam, The Netherlands for their help and support.
  6753. Also special thanks to Marco Piovanelli for his support and comments about
  6754. preliminary versions and updates.
  6755.  
  6756. The persons mentioned above provided information used in this list. They
  6757. did this on personal title, NOT on behalf of their employer, unless
  6758. explicitly stated otherwise.
  6759. I assume information you mail to me about Gestalt selectors may be used in
  6760. this list. Information made available to the general public (e.g. a posting
  6761. to a USENET newsgroup) is also included and the persons name added to this
  6762. section.
  6763. I will mail you back to thank you and include the parts from the list which
  6764. were changed, according to the information you provided, to let you check
  6765. it.
  6766.  
  6767. Legal Stuff
  6768. -----------
  6769. (C) 1992-1995, Rene G.A. Ros
  6770.  
  6771. **NOTICE OF LIABILITY**
  6772. The information in this list is distributed on an "AS IS" basis, without
  6773. warranty. While every precaution has been taken in the preparation of this
  6774. list, neither the editor nor any contributor nor any publisher, providing
  6775. this list on any type of media, shall have any liability to any person or
  6776. entity with respect to any liability, loss, or damage caused or alleged to
  6777. be caused directly or indirectly by the information contained in this list
  6778. or by the computer software and hardware products described herein.
  6779. In addition it should be noted explicitly this list is NOT a product of
  6780. Apple Computer Inc., like any other publisher, NOR are they responsible for
  6781. any problems you may encounter in its use.
  6782.  
  6783. **TRADEMARKS**
  6784. Throughout this list trademarked names are used. Rather than put a
  6785. trademark symbol in every occurrence of a trademarked name, I state I am
  6786. using the names only in an editorial fashion and to the benefit of the
  6787. trademark owner with no intention of infringement of the trademark.
  6788.  
  6789. **USE AND DISTRIBUTION**
  6790. The information in this list may be used freely, but the list is NOT
  6791. public domain.
  6792. When you use the information in this list for COMMERCIAL purposes, you may
  6793. consider sending the editor a donation to help pay in the costs.
  6794.  
  6795. It is not allowed to use excerpts of this list with your documentation, or
  6796. in any other way, without giving proper credit by using this line:
  6797. "This documentation lists information provided by the Gestalt Selectors
  6798. List, edited and maintained by Rene G.A. Ros (Internet: rgaros@bio.vu.nl)"
  6799. If you use excerpts you are advised to subscribe to the mailing list to be
  6800. notified about errors and the latest news.
  6801. Or, when your software makes extensive use of the information provided by
  6802. this list, please use this line in your documentation:
  6803. "This software uses information provided by the Gestalt Selectors List,
  6804. edited and maintained by Rene G.A. Ros (Internet: rgaros@bio.vu.nl)"
  6805. Please also mention this list in the About window of your software, if
  6806. possible.
  6807.  
  6808. The GSL may not be distributed outside any computer network on media of
  6809. which the capacity exceeds 2 Megabytes or in print unless you have
  6810. contacted the editor, prior to publication, and received permission to do
  6811. so. This is mainly to ensure you have the latest version. The updates may
  6812. not be distributed, these are ONLY for the persons on the mailing list.
  6813.  
  6814. Permission for distribution of the full list is granted to:
  6815. Aladdin Systems                      (InstallerMaker software)
  6816. Apple Computer, Inc.                 (Developer CD Series, Bookmark CD)
  6817. Arizona Macintosh Users Group        (BBS in a BOX CD-ROM)
  6818. Celestin Company                     (Apprentice CD-ROM, CD-ROM companion
  6819.                                       to TRICKS OF THE MAC GAME PROGRAMMING
  6820.                                       GURUS book)
  6821. Club Macintosh de Quebec
  6822. CP Shareware
  6823. Pacific HiTech, Inc.                 (Info-Mac CD-ROM, Umich CD-ROM)
  6824. Quantum Leap Technologies, Inc.      (The Right Stuffed CD-ROM)
  6825.  
  6826. Distribution of modified versions of this list, including, but not limited
  6827. to, deleting, adding or moving text or adding non-text parts, is not
  6828. allowed. Distribution in any electronical format except a normal (or
  6829. compressed) text file is not allowed without permission.
  6830. You are not allowed to redistribute the GSL with any other name than
  6831. 'gestalt-selectors-XX.YYY'  or 'Gestalt Selectors List X.X' for a plain
  6832. text file format (where XX and X.X is the version number and YYY the suffix
  6833. to indicate compression etc.), unless because of technical reasons. In such
  6834. case a name should be chosen which resambles it as closely as possible to
  6835. avoid possible confusion.
  6836.  
  6837. Editor's Address
  6838. ----------------
  6839. Rene G.A. Ros
  6840. developer at Mac Support Automation B.V., Uitgeest, The Netherlands
  6841. consultant to the Computer Department,
  6842.     Biology Faculty, Vrije Universiteit Amsterdam, The Netherlands
  6843. contract programmer Pascal and C, also 4th Dimension and other data-bases
  6844.  
  6845. D.C. van Krimpenstraat 3
  6846. 1067 SG  Amsterdam-Geuzenveld
  6847. The Netherlands, Europe
  6848.  
  6849. Email: rgaros@bio.vu.nl (preferred)
  6850.        rgaros@dds.nl
  6851.        100112.1363@compuserve.com
  6852.